{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import linalg as LA\n",
    "\n",
    "from qiskit import(\n",
    "    QuantumCircuit,\n",
    "    ClassicalRegister, \n",
    "    QuantumRegister,\n",
    "    transpile)\n",
    "\n",
    "from qiskit.circuit.library import UnitaryGate\n",
    "from qiskit.circuit.library import efficient_su2\n",
    "from qiskit.quantum_info import Statevector\n",
    "\n",
    "from qiskit.providers.basic_provider import BasicProvider\n",
    "# from qiskit_ionq import IonQProvider, GPIGate, GPI2Gate, ZZGate\n",
    "\n",
    "# backend = BasicProvider().get_backend('basic_simulator')\n",
    "# provider = IonQProvider()\n",
    "\n",
    "from qiskit_aer import AerSimulator\n",
    "from qiskit_ibm_runtime.fake_provider import FakeWashingtonV2\n",
    "backend = AerSimulator.from_backend(FakeWashingtonV2())\n",
    "\n",
    "# backend_native = provider.get_backend(\"simulator\", gateset='native')\n",
    "\n",
    "from givens_angles import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[0, 1], [1, 0]], dtype='complex')\n",
    "y = np.array([[0, -1j], [1j, 0]], dtype='complex')\n",
    "Id = np.identity(2)\n",
    "op = np.kron(Id, x) @ np.kron(y, Id) - np.kron(Id, y) @ np.kron(x, Id)\n",
    "\n",
    "def givens_circ(theta):\n",
    "    mat = LA.expm(1j/2 * theta * op)\n",
    "    qreg = QuantumRegister(2)\n",
    "    circ = QuantumCircuit(2)\n",
    "    circ.append(UnitaryGate(mat), [0, 1])\n",
    "    return circ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N_s = 8\n",
    "N_t = 1\n",
    "J = 0.4\n",
    "h = 1\n",
    "g = 0.3\n",
    "dt = 0.6\n",
    "N_t * dt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def build_op(N_s, site, op):\n",
    "    Op = np.identity(1)\n",
    "    for s in range(N_s):\n",
    "        if s == site:\n",
    "            Op = np.kron(Op, op)\n",
    "        else:\n",
    "            Op = np.kron(Op, np.identity(2))\n",
    "    return Op\n",
    "\n",
    "x = np.array([[0, 1], [1, 0]])\n",
    "y = np.array([[0, -1j], [1j, 0]])\n",
    "z = np.array([[1, 0], [0, -1]])\n",
    "n = np.array([[0, 0], [0, 1]])\n",
    "sm = (x - 1j * y) / 2\n",
    "\n",
    "X = []\n",
    "Z = []\n",
    "N = []\n",
    "Sm = []\n",
    "\n",
    "for i in range(N_s):\n",
    "    X.append(build_op(N_s, i, x))\n",
    "    Z.append(build_op(N_s, i, z))\n",
    "    N.append(build_op(N_s, i, n))\n",
    "    Sm.append(build_op(N_s, i, sm))\n",
    "\n",
    "H_XX = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "H_Z = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "H_ZZ = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "\n",
    "for j in range(N_s):\n",
    "    H_XX -= J * X[j] @ X[(j + 1) % N_s]\n",
    "    H_Z -= h * Z[j]\n",
    "    H_ZZ -= g * Z[j] @ Z[(j + 1) % N_s]\n",
    "\n",
    "TEO = LA.expm(-1j * dt * H_Z) @ LA.expm(-1j * dt * H_XX) @ LA.expm(-1j * dt * H_ZZ)\n",
    "\n",
    "H = H_XX + H_Z + H_ZZ\n",
    "Evals, Evecs = np.linalg.eigh(H)\n",
    "ground_state = Evecs[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j  0.-0.j  0.+0.j -0.+0.j  0.+0.j]\n",
      "[ 1.+0.j  0.+0.j -0.+0.j  0.+0.j -0.+0.j  0.+0.j  0.-0.j  0.-0.j]\n"
     ]
    }
   ],
   "source": [
    "n_k = 3\n",
    "sigma = 3/2\n",
    "# Finds Givens Angles for givens N_s, n_s (if localized),\n",
    "# mean position x, mean momentum number (integer), and width.\n",
    "# From givens_angles.py\n",
    "# r = [-1, 0, 1, 2]\n",
    "betas_r, angles_r = giv_angles(N_s, N_s, 1, n_k, sigma, r=None)\n",
    "betas_l, angles_l = giv_angles(N_s, N_s, 5, -n_k, sigma, r=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "vqe_angles = np.load('vqe-thetas-N8-J0.4-h1-g0.3.npy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_circuit(t_step):\n",
    "    qreg = QuantumRegister(N_s+4)\n",
    "    creg = ClassicalRegister(N_s+4)\n",
    "    circ = QuantumCircuit(qreg, creg)\n",
    "\n",
    "    # State-Prep\n",
    "    ## Ground state preparation\n",
    "    # circ.prepare_state(ground_state, range(N_s)) # Exact\n",
    "    ## VQE\n",
    "    for i in range(N_s):\n",
    "        circ.ry(vqe_angles[i], i)\n",
    "        circ.rz(vqe_angles[N_s + i], i)\n",
    "\n",
    "    for i in range(2, len(vqe_angles)//N_s-1,2):    \n",
    "        for j in range(N_s-1):\n",
    "            k = N_s - 1 - j\n",
    "            circ.cx(k-1, k)\n",
    "        for j in range(N_s):\n",
    "            circ.ry(vqe_angles[i * N_s + j], j)\n",
    "            circ.rz(vqe_angles[(i+1) * N_s + j], j)\n",
    "\n",
    "    circ.x(N_s) # Prepare control\n",
    "    circ.x(N_s+2) # Prepare control\n",
    "\n",
    "    ## Right moving wave packet\n",
    "    ### V^dag\n",
    "    for i in range(N_s):\n",
    "        circ.rz(betas_r[i], i)\n",
    "    for i in range(N_s-1):\n",
    "        j = N_s - 1 - i\n",
    "        circ.append(givens_circ(angles_r[i]), [j-1, j])\n",
    "    ###\n",
    "    circ.ccx(N_s, 0, N_s+1) # Remove |1> part of system qubit\n",
    "    circ.x(0) # Excite system qubit\n",
    "    ### V\n",
    "    for i in range(N_s-1):\n",
    "        j = N_s - 2 - i\n",
    "        circ.append(givens_circ(-angles_r[j]), [i, i+1])\n",
    "    for i in range(N_s):\n",
    "        circ.rz(-betas_r[i], i)\n",
    "    \n",
    "    # # Left Moving Wave Packet\n",
    "    # # V^dag\n",
    "    for i in range(N_s):\n",
    "        circ.rz(betas_l[i], i)\n",
    "    for i in range(N_s-1):\n",
    "        j = N_s - 1 - i\n",
    "        circ.append(givens_circ(angles_l[i]), [j-1, j])\n",
    "    ###\n",
    "    circ.ccx(N_s+2, 0, N_s+3) # Remove |1> part of system qubit\n",
    "    # for i in range(N_s//2): # Obey anticommutation relations\n",
    "    #     circ.z(i)\n",
    "    circ.x(0) # Excite system qubit\n",
    "    ### V\n",
    "    for i in range(N_s-1):\n",
    "        j = N_s - 2 - i\n",
    "        circ.append(givens_circ(-angles_l[j]), [i, i+1])\n",
    "    for i in range(N_s):\n",
    "        circ.rz(-betas_l[i], i)\n",
    "    \n",
    "    # Trotter Evolution\n",
    "    for i in range(t_step):\n",
    "        # Transverse Field\n",
    "        for j in range(N_s):\n",
    "            circ.rz(-2 * h * dt, j)\n",
    "        # Nearest-neighbor\n",
    "        for j in range(N_s):\n",
    "            circ.rxx(-2 * J * dt, j, (j + 1) % N_s)\n",
    "        # Longitudinal Field\n",
    "        for j in range(N_s):\n",
    "            circ.rzz(-2 * g * dt, j, (j + 1) % N_s)\n",
    "    \n",
    "    # Measure\n",
    "    circ.measure(qreg, creg[::-1])\n",
    "\n",
    "    # new_circuit = transpile(circ, backend, \n",
    "    #                     basis_gates=['cx', 'id', 'rz', 'x', 'sx'], \n",
    "    #                     optimization_level=3)\n",
    "\n",
    "    return circ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "basis_gates = ['cz', 'rx', 'rz', 'rzz', 'sx', 'x']\n",
    "\n",
    "circuits = []\n",
    "gates = []\n",
    "depths = []\n",
    "for i in range(N_t):\n",
    "    circuit = make_circuit(i)\n",
    "    new_circuit = transpile(circuit, backend=backend, optimization_level=3)\n",
    "    circuits.append(new_circuit)\n",
    "    gates.append(dict(new_circuit.count_ops()))\n",
    "    depths.append(new_circuit.depth())\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[291]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "depths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'rz': 235, 'sx': 181, 'cx': 81, 'measure': 12, 'x': 6}]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_shots = 100000\n",
    "job = backend.run(circuits, shots=num_shots)\n",
    "counts_list = job.result().get_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1656"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(counts_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# filename = 'qsim-free-Ns' + str(N_s)\n",
    "# # filename = 'ionq-run-Feb10-Ns' + str(N_s)\n",
    "# filename += '-lam' + str(lam)\n",
    "# filename += '-eps' + str(hL)\n",
    "# filename += '-dt' + str(dt)\n",
    "# filename += '-shots' + str(num_shots)\n",
    "# filename += '.json'\n",
    "\n",
    "# import json\n",
    "# with open(filename, 'w') as fout:\n",
    "#     json.dump(counts_list, fout)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'000110111110': 1,\n",
       " '101100101110': 1,\n",
       " '000011101011': 1,\n",
       " '100101111000': 1,\n",
       " '110110011011': 1,\n",
       " '101000110111': 1,\n",
       " '001100111110': 1,\n",
       " '000011100110': 1,\n",
       " '000110011001': 1,\n",
       " '000101111011': 1,\n",
       " '011101001111': 1,\n",
       " '110111111010': 1,\n",
       " '111100100011': 1,\n",
       " '001101111110': 2,\n",
       " '100101000011': 1,\n",
       " '110000011111': 2,\n",
       " '000101100110': 1,\n",
       " '000100011100': 1,\n",
       " '010111111011': 1,\n",
       " '011100001111': 1,\n",
       " '011110101000': 1,\n",
       " '110011100010': 1,\n",
       " '010110101000': 1,\n",
       " '000001101000': 1,\n",
       " '010000001101': 1,\n",
       " '001011111011': 2,\n",
       " '111001111011': 1,\n",
       " '011001011001': 1,\n",
       " '010100000000': 1,\n",
       " '100011111011': 1,\n",
       " '100101110010': 1,\n",
       " '100010110110': 1,\n",
       " '011001100011': 1,\n",
       " '001000110101': 1,\n",
       " '000000010110': 2,\n",
       " '010011101010': 183,\n",
       " '011000011001': 2,\n",
       " '011011011110': 1,\n",
       " '101011101011': 1,\n",
       " '101000011101': 1,\n",
       " '000001111111': 1,\n",
       " '001110001111': 2,\n",
       " '001000010110': 1,\n",
       " '001001101111': 2,\n",
       " '101100000110': 1,\n",
       " '100010101100': 1,\n",
       " '011010101010': 34,\n",
       " '000110010110': 1,\n",
       " '001010001100': 5,\n",
       " '011100101110': 2,\n",
       " '010001001100': 8,\n",
       " '100100110011': 2,\n",
       " '100110010111': 1,\n",
       " '010111101101': 1,\n",
       " '001110110000': 1,\n",
       " '000100101100': 1,\n",
       " '000100000000': 1,\n",
       " '000000111010': 203,\n",
       " '000000110000': 1,\n",
       " '010011010011': 2,\n",
       " '101000011111': 2,\n",
       " '011101100010': 1,\n",
       " '001110100010': 1,\n",
       " '010100001001': 5,\n",
       " '101100110110': 1,\n",
       " '011010000111': 1,\n",
       " '100010111001': 2,\n",
       " '000010010000': 1,\n",
       " '010110001100': 1,\n",
       " '010000011111': 23,\n",
       " '000001101111': 3,\n",
       " '000110000011': 1,\n",
       " '001110001100': 1,\n",
       " '101100101011': 2,\n",
       " '010000001100': 8,\n",
       " '100100011111': 1,\n",
       " '000110001010': 191,\n",
       " '100101001001': 1,\n",
       " '101001100010': 3,\n",
       " '000011010010': 5,\n",
       " '011111001110': 1,\n",
       " '000110100110': 1,\n",
       " '000001010000': 2,\n",
       " '010001101111': 1,\n",
       " '000000100111': 1,\n",
       " '110010101001': 1,\n",
       " '000010111000': 3,\n",
       " '011001001100': 1,\n",
       " '001000101100': 3,\n",
       " '101001000011': 2,\n",
       " '100010001110': 138,\n",
       " '001001101101': 1,\n",
       " '010001111111': 1,\n",
       " '011100010011': 1,\n",
       " '000000100010': 106,\n",
       " '010010011001': 4,\n",
       " '110111000010': 2,\n",
       " '101010101110': 1,\n",
       " '011011001111': 1,\n",
       " '001100100110': 1,\n",
       " '010001100111': 2,\n",
       " '101100011110': 2,\n",
       " '110000111010': 40,\n",
       " '010010110011': 1,\n",
       " '001010101000': 2,\n",
       " '101010000111': 1,\n",
       " '010001111001': 1,\n",
       " '000101000011': 3,\n",
       " '010011100011': 1,\n",
       " '011001010000': 1,\n",
       " '000010111110': 9,\n",
       " '011001011000': 2,\n",
       " '011100001110': 3,\n",
       " '101010001001': 1,\n",
       " '001001011100': 1,\n",
       " '001110101011': 2,\n",
       " '001101000000': 1,\n",
       " '011001111011': 1,\n",
       " '100001100110': 2,\n",
       " '000011001000': 1,\n",
       " '101010011000': 1,\n",
       " '100101111011': 1,\n",
       " '111000001010': 22,\n",
       " '111000110010': 1,\n",
       " '111011011010': 5,\n",
       " '001011100110': 1,\n",
       " '010101000110': 8,\n",
       " '011001000111': 1,\n",
       " '100100101011': 20,\n",
       " '010111110010': 1,\n",
       " '110100100010': 3,\n",
       " '100110000011': 2,\n",
       " '001010100000': 1,\n",
       " '110000100001': 1,\n",
       " '100000010010': 19,\n",
       " '001110001000': 2,\n",
       " '111010010010': 1,\n",
       " '101100000010': 1,\n",
       " '101101000010': 2,\n",
       " '000110100010': 1,\n",
       " '000000010010': 23,\n",
       " '010100000001': 1,\n",
       " '011000100110': 1,\n",
       " '001011101000': 1,\n",
       " '111110111010': 1,\n",
       " '010101011110': 2,\n",
       " '100100010011': 3,\n",
       " '010010001100': 2,\n",
       " '010001010010': 72,\n",
       " '001011001111': 2,\n",
       " '001110111111': 1,\n",
       " '100000101101': 1,\n",
       " '001100011110': 2,\n",
       " '100010011001': 3,\n",
       " '011110001000': 2,\n",
       " '101101000110': 2,\n",
       " '010110100110': 3,\n",
       " '111010001110': 1,\n",
       " '100001001000': 89,\n",
       " '000000000100': 3,\n",
       " '001001110111': 1,\n",
       " '001100000000': 1,\n",
       " '101000011000': 1,\n",
       " '111000001000': 2,\n",
       " '011110001001': 1,\n",
       " '100001000111': 4,\n",
       " '010010110110': 2,\n",
       " '100100101111': 1,\n",
       " '110010100010': 3,\n",
       " '010011101110': 6,\n",
       " '000001111001': 1,\n",
       " '110000000111': 1,\n",
       " '111100000011': 1,\n",
       " '110000001010': 213,\n",
       " '010101011000': 3,\n",
       " '110001100110': 2,\n",
       " '000000011001': 1,\n",
       " '110101101110': 2,\n",
       " '000011011111': 1,\n",
       " '011000111000': 1,\n",
       " '001101000111': 2,\n",
       " '000011000011': 3,\n",
       " '110111011010': 4,\n",
       " '010011001010': 890,\n",
       " '100110001000': 4,\n",
       " '010101101011': 8,\n",
       " '110000100110': 6,\n",
       " '000101011011': 3,\n",
       " '000110001100': 1,\n",
       " '111100101110': 1,\n",
       " '100010000111': 3,\n",
       " '100001101001': 4,\n",
       " '001011011000': 1,\n",
       " '111011001011': 1,\n",
       " '100010011100': 1,\n",
       " '011110100010': 1,\n",
       " '000011010110': 1,\n",
       " '001001101100': 1,\n",
       " '010110100011': 1,\n",
       " '100001100011': 2,\n",
       " '010111000010': 8,\n",
       " '001000100101': 1,\n",
       " '010011000000': 1,\n",
       " '011110111010': 3,\n",
       " '000001110110': 1,\n",
       " '100001001111': 8,\n",
       " '000000101101': 3,\n",
       " '000001011101': 2,\n",
       " '000111001000': 2,\n",
       " '011101001110': 4,\n",
       " '000100111110': 5,\n",
       " '100100100111': 1,\n",
       " '110100000010': 2,\n",
       " '110001100101': 1,\n",
       " '010001111011': 26,\n",
       " '001100101001': 4,\n",
       " '111000111010': 8,\n",
       " '110000111110': 1,\n",
       " '100010100011': 2,\n",
       " '000001000101': 1,\n",
       " '000001001100': 4,\n",
       " '110101000010': 1,\n",
       " '000001000001': 2,\n",
       " '001001111000': 2,\n",
       " '110000110111': 1,\n",
       " '101110000010': 4,\n",
       " '111001000110': 1,\n",
       " '000010010110': 6,\n",
       " '100110101000': 1,\n",
       " '010110010011': 2,\n",
       " '010000110000': 1,\n",
       " '111000001110': 3,\n",
       " '010111000110': 3,\n",
       " '010010101111': 2,\n",
       " '100100001001': 1,\n",
       " '101001111110': 1,\n",
       " '000100101101': 1,\n",
       " '100011010011': 1,\n",
       " '000110110110': 1,\n",
       " '110000010011': 2,\n",
       " '000000101100': 3,\n",
       " '101110011110': 1,\n",
       " '110001101001': 2,\n",
       " '101101001000': 4,\n",
       " '001000010000': 1,\n",
       " '011001101001': 2,\n",
       " '010100111110': 2,\n",
       " '100100110010': 2,\n",
       " '010001101000': 24,\n",
       " '010111101011': 1,\n",
       " '000110000001': 1,\n",
       " '000000000000': 3,\n",
       " '001000000001': 3,\n",
       " '010111010011': 1,\n",
       " '101010101010': 23,\n",
       " '011101001000': 2,\n",
       " '011010000011': 2,\n",
       " '010010000001': 3,\n",
       " '000010100010': 10,\n",
       " '001100001100': 1,\n",
       " '000010101101': 1,\n",
       " '100101000111': 1,\n",
       " '101011001110': 5,\n",
       " '000100001101': 2,\n",
       " '011001101110': 2,\n",
       " '000110000010': 17,\n",
       " '101101001110': 3,\n",
       " '001100101000': 3,\n",
       " '110100111010': 5,\n",
       " '110000100011': 4,\n",
       " '011000111110': 2,\n",
       " '010011111010': 50,\n",
       " '101111001011': 2,\n",
       " '010101101000': 3,\n",
       " '110011001111': 1,\n",
       " '010000010000': 3,\n",
       " '010110000110': 4,\n",
       " '010000110011': 10,\n",
       " '011001000110': 5,\n",
       " '000010101010': 56,\n",
       " '001101101000': 1,\n",
       " '110001100011': 2,\n",
       " '100100101001': 2,\n",
       " '011111001000': 1,\n",
       " '101000100111': 1,\n",
       " '001000111000': 7,\n",
       " '100010101111': 1,\n",
       " '000101101001': 1,\n",
       " '100000010111': 4,\n",
       " '100101101110': 4,\n",
       " '100001111000': 1,\n",
       " '001001000001': 2,\n",
       " '101110100010': 1,\n",
       " '010111111010': 6,\n",
       " '001101110010': 2,\n",
       " '011100011011': 7,\n",
       " '010100001111': 11,\n",
       " '101110101001': 1,\n",
       " '100101011011': 3,\n",
       " '010011101000': 2,\n",
       " '000001000000': 3,\n",
       " '001000111111': 4,\n",
       " '000010001001': 2,\n",
       " '001001010110': 5,\n",
       " '110001000011': 5,\n",
       " '010100011010': 104,\n",
       " '011001101000': 1,\n",
       " '010111011110': 1,\n",
       " '010111001111': 2,\n",
       " '111101100011': 1,\n",
       " '100000110110': 3,\n",
       " '000110101011': 6,\n",
       " '011000110010': 3,\n",
       " '011010010011': 1,\n",
       " '000001100110': 4,\n",
       " '111101011010': 2,\n",
       " '010001000101': 2,\n",
       " '000111001011': 3,\n",
       " '101001111011': 2,\n",
       " '111111011010': 1,\n",
       " '010100011000': 2,\n",
       " '001100111000': 1,\n",
       " '110110001011': 6,\n",
       " '010001001001': 69,\n",
       " '101001010110': 1,\n",
       " '000000111100': 2,\n",
       " '010001001101': 5,\n",
       " '111000000010': 4,\n",
       " '100010101001': 3,\n",
       " '111001101011': 1,\n",
       " '100100011110': 3,\n",
       " '010100111000': 2,\n",
       " '000100010010': 6,\n",
       " '010100001011': 252,\n",
       " '010101100100': 1,\n",
       " '100000111110': 9,\n",
       " '100000111000': 4,\n",
       " '000110001111': 2,\n",
       " '010110101011': 8,\n",
       " '011011001000': 1,\n",
       " '101001000001': 1,\n",
       " '011111011010': 2,\n",
       " '001000110110': 3,\n",
       " '010011010111': 1,\n",
       " '001010001001': 13,\n",
       " '001001101001': 3,\n",
       " '000000111111': 3,\n",
       " '110010001111': 3,\n",
       " '111000011010': 6,\n",
       " '010110110010': 2,\n",
       " '001000101101': 1,\n",
       " '000100000110': 4,\n",
       " '101101001001': 1,\n",
       " '101010000011': 1,\n",
       " '000101000000': 3,\n",
       " '000000000010': 72,\n",
       " '111010001011': 3,\n",
       " '101100001110': 2,\n",
       " '111000001111': 1,\n",
       " '110110111010': 4,\n",
       " '001001100011': 3,\n",
       " '101001000010': 22,\n",
       " '010001011000': 26,\n",
       " '001001100001': 1,\n",
       " '001110011011': 5,\n",
       " '110010011000': 1,\n",
       " '101101111011': 1,\n",
       " '010001011111': 2,\n",
       " '011100111000': 2,\n",
       " '000010000000': 1,\n",
       " '010000011011': 454,\n",
       " '100000011001': 5,\n",
       " '100010000010': 124,\n",
       " '100001000000': 3,\n",
       " '001110010110': 2,\n",
       " '011000101001': 5,\n",
       " '001001111111': 2,\n",
       " '010100100110': 6,\n",
       " '101110101110': 1,\n",
       " '000111111010': 2,\n",
       " '101101111110': 1,\n",
       " '001111001110': 2,\n",
       " '100011101000': 1,\n",
       " '100110000110': 3,\n",
       " '011110010010': 1,\n",
       " '110000011000': 2,\n",
       " '011111101010': 1,\n",
       " '001110011110': 1,\n",
       " '100001111001': 3,\n",
       " '010001100000': 2,\n",
       " '101101001011': 3,\n",
       " '111000101010': 43,\n",
       " '010001010111': 1,\n",
       " '010000100001': 2,\n",
       " '011000001011': 191,\n",
       " '010000110110': 10,\n",
       " '001011000110': 4,\n",
       " '011110000011': 2,\n",
       " '011111000010': 1,\n",
       " '010100000111': 1,\n",
       " '000000101001': 3,\n",
       " '110101001000': 3,\n",
       " '011000000000': 2,\n",
       " '000111011110': 1,\n",
       " '010100100011': 7,\n",
       " '001001000101': 2,\n",
       " '001100001111': 5,\n",
       " '001010101001': 1,\n",
       " '001001000100': 3,\n",
       " '010001000011': 62,\n",
       " '010001011010': 1292,\n",
       " '100011100010': 4,\n",
       " '110000000011': 31,\n",
       " '100110111011': 2,\n",
       " '010000010111': 7,\n",
       " '000001100011': 2,\n",
       " '100110010011': 1,\n",
       " '000110011101': 1,\n",
       " '111010011011': 4,\n",
       " '010011011000': 4,\n",
       " '001101101110': 3,\n",
       " '000000001100': 6,\n",
       " '010111001000': 3,\n",
       " '011000101000': 5,\n",
       " '011010111010': 11,\n",
       " '000111101100': 1,\n",
       " '010010100011': 7,\n",
       " '101000001001': 4,\n",
       " '011101111110': 1,\n",
       " '001010110110': 2,\n",
       " '111001001001': 2,\n",
       " '111101001000': 1,\n",
       " '100001011101': 1,\n",
       " '001100100001': 1,\n",
       " '001111001011': 5,\n",
       " '110110101010': 5,\n",
       " '010010111001': 2,\n",
       " '111000010000': 1,\n",
       " '101000011110': 1,\n",
       " '100001001010': 4948,\n",
       " '000111000110': 1,\n",
       " '001010011001': 4,\n",
       " '100111101000': 1,\n",
       " '011000011100': 2,\n",
       " '000011111110': 2,\n",
       " '100101101000': 2,\n",
       " '001001011001': 4,\n",
       " '101111011110': 1,\n",
       " '010110001000': 8,\n",
       " '100010011011': 34,\n",
       " '101010010010': 1,\n",
       " '010010010000': 1,\n",
       " '100000110011': 2,\n",
       " '100100010010': 3,\n",
       " '110101001011': 5,\n",
       " '101011000010': 4,\n",
       " '001001000010': 266,\n",
       " '010001100001': 2,\n",
       " '011010111110': 2,\n",
       " '001001011000': 16,\n",
       " '011000011110': 7,\n",
       " '000100101011': 8,\n",
       " '100100101000': 3,\n",
       " '000101111000': 1,\n",
       " '111101001011': 1,\n",
       " '010000100100': 2,\n",
       " '001011101110': 4,\n",
       " '011000010010': 3,\n",
       " '001101001111': 1,\n",
       " '101001110010': 1,\n",
       " '110010011011': 3,\n",
       " '010001110000': 3,\n",
       " '010111011000': 2,\n",
       " '000011001111': 3,\n",
       " '001100011000': 1,\n",
       " '100011000011': 3,\n",
       " '000100001010': 110,\n",
       " '111110001011': 1,\n",
       " '110010100110': 1,\n",
       " '001101111000': 3,\n",
       " '011010101000': 2,\n",
       " '010100011111': 4,\n",
       " '111010101010': 5,\n",
       " '111100111010': 1,\n",
       " '110000001000': 16,\n",
       " '000101010010': 5,\n",
       " '010001000100': 3,\n",
       " '011000100100': 1,\n",
       " '110100001010': 33,\n",
       " '110100111011': 5,\n",
       " '101000001100': 1,\n",
       " '010111011010': 27,\n",
       " '000100111011': 3,\n",
       " '111001001011': 3,\n",
       " '010011001100': 1,\n",
       " '010000000010': 331,\n",
       " '100010011111': 3,\n",
       " '000001110100': 1,\n",
       " '101110011010': 12,\n",
       " '100100000011': 8,\n",
       " '100000010000': 1,\n",
       " '001000101000': 51,\n",
       " '101000001101': 1,\n",
       " '010100111011': 14,\n",
       " '100010111000': 2,\n",
       " '010000011100': 1,\n",
       " '010100000101': 1,\n",
       " '100001111110': 8,\n",
       " '100011110110': 1,\n",
       " '000111001110': 8,\n",
       " '011100001001': 1,\n",
       " '001000111001': 3,\n",
       " '000111001001': 1,\n",
       " '010001001000': 277,\n",
       " '110010011010': 34,\n",
       " '011101000110': 1,\n",
       " '110100001000': 1,\n",
       " '111001111010': 4,\n",
       " '011000110110': 2,\n",
       " '010000101111': 18,\n",
       " '010101100000': 1,\n",
       " '101000111001': 1,\n",
       " '000001101011': 3,\n",
       " '110010010000': 1,\n",
       " '001010111011': 9,\n",
       " '001011010010': 9,\n",
       " '101000110010': 1,\n",
       " '011011001110': 1,\n",
       " '001000100100': 2,\n",
       " '111110011010': 2,\n",
       " '101111101010': 2,\n",
       " '000101100010': 4,\n",
       " '000100001001': 1,\n",
       " '001010010110': 4,\n",
       " '010101010010': 14,\n",
       " '110011101011': 1,\n",
       " '000010001101': 3,\n",
       " '110110100010': 1,\n",
       " '100100100011': 2,\n",
       " '100010111110': 7,\n",
       " '011010101011': 6,\n",
       " '000011100010': 6,\n",
       " '011101011110': 2,\n",
       " '001010011011': 35,\n",
       " '010010101010': 659,\n",
       " '111101101010': 2,\n",
       " '000000110111': 2,\n",
       " '100100000111': 2,\n",
       " '010011101111': 1,\n",
       " '010100101110': 9,\n",
       " '001001011111': 3,\n",
       " '110001011110': 6,\n",
       " '001111101010': 8,\n",
       " '000000010000': 2,\n",
       " '010001100011': 12,\n",
       " '110111000110': 1,\n",
       " '000111010110': 1,\n",
       " '000000001101': 5,\n",
       " '110000010001': 1,\n",
       " '000010101011': 7,\n",
       " '010100111100': 1,\n",
       " '011100001000': 2,\n",
       " '010010101100': 1,\n",
       " '110011011110': 2,\n",
       " '000000111000': 1,\n",
       " '101000001000': 6,\n",
       " '010000100000': 6,\n",
       " '011010011110': 1,\n",
       " '011110000010': 3,\n",
       " '001100100111': 1,\n",
       " '001101100010': 5,\n",
       " '100010011101': 1,\n",
       " '010101001111': 5,\n",
       " '110010011110': 3,\n",
       " '100000011000': 15,\n",
       " '111000101110': 1,\n",
       " '000010001000': 5,\n",
       " '011010100010': 6,\n",
       " '000101101011': 6,\n",
       " '001000010010': 20,\n",
       " '010001101100': 2,\n",
       " '010010111000': 3,\n",
       " '101001011010': 64,\n",
       " '000001101100': 1,\n",
       " '010000001000': 172,\n",
       " '000110001001': 3,\n",
       " '100001110110': 2,\n",
       " '100000100100': 1,\n",
       " '010000011110': 27,\n",
       " '001101000011': 5,\n",
       " '111010000010': 3,\n",
       " '010011100010': 12,\n",
       " '000100111101': 1,\n",
       " '010011001011': 64,\n",
       " '011111001011': 2,\n",
       " '100101101010': 46,\n",
       " '010011111000': 2,\n",
       " '110000101001': 4,\n",
       " '101001000110': 6,\n",
       " '010010101001': 4,\n",
       " '001000100011': 11,\n",
       " '001001110010': 8,\n",
       " '110100010011': 1,\n",
       " '000011001110': 34,\n",
       " '010000000101': 1,\n",
       " '000011110110': 1,\n",
       " '001111100010': 2,\n",
       " '100000000111': 21,\n",
       " '010000000000': 18,\n",
       " '011110101010': 8,\n",
       " '111001000010': 7,\n",
       " '011001010110': 1,\n",
       " '100100000110': 2,\n",
       " '000000001011': 276,\n",
       " '011110011010': 11,\n",
       " '001010001110': 116,\n",
       " '010001110010': 17,\n",
       " '010010000000': 6,\n",
       " '101010111001': 1,\n",
       " '000101000110': 10,\n",
       " '100000001100': 3,\n",
       " '010101011101': 1,\n",
       " '001011100011': 1,\n",
       " '100111001011': 4,\n",
       " '000001000100': 1,\n",
       " '100110011110': 1,\n",
       " '000110110111': 1,\n",
       " '000011001101': 1,\n",
       " '001101010010': 2,\n",
       " '101000011011': 29,\n",
       " '111000000011': 5,\n",
       " '000000100110': 15,\n",
       " '110010101011': 1,\n",
       " '010100010011': 6,\n",
       " '100100001110': 13,\n",
       " '000100101000': 6,\n",
       " '110111010010': 1,\n",
       " '010000101101': 3,\n",
       " '000110011011': 3,\n",
       " '011001111110': 2,\n",
       " '011100100010': 3,\n",
       " '000100111111': 3,\n",
       " '010000000001': 10,\n",
       " '010110100000': 1,\n",
       " '101000000110': 3,\n",
       " '010000101011': 428,\n",
       " '100011011010': 93,\n",
       " '101001001000': 4,\n",
       " '001010001101': 2,\n",
       " '010011011010': 276,\n",
       " '000010100110': 7,\n",
       " '010001011011': 89,\n",
       " '001100011011': 20,\n",
       " '001001110011': 3,\n",
       " '010101000001': 1,\n",
       " '101100000011': 3,\n",
       " '001000000111': 16,\n",
       " '110001011011': 6,\n",
       " '010000000100': 1,\n",
       " '000100011111': 6,\n",
       " '001111111010': 3,\n",
       " '110000000110': 6,\n",
       " '001000001010': 664,\n",
       " '011001010111': 1,\n",
       " '110100011000': 2,\n",
       " '111001001110': 2,\n",
       " '110001001001': 5,\n",
       " '111011101010': 3,\n",
       " '001010100010': 18,\n",
       " '100100100010': 8,\n",
       " '010011110010': 1,\n",
       " '100000011110': 9,\n",
       " '101100011010': 1,\n",
       " '010011001001': 12,\n",
       " '000110011010': 27,\n",
       " '000100011110': 8,\n",
       " '001000011111': 15,\n",
       " '010110101110': 4,\n",
       " '100100101100': 1,\n",
       " '000111101010': 8,\n",
       " '000011111011': 1,\n",
       " '001100011111': 1,\n",
       " '011000000101': 1,\n",
       " '100011011011': 7,\n",
       " '100011001011': 30,\n",
       " '011001000000': 1,\n",
       " '100000010110': 2,\n",
       " '111111111010': 2,\n",
       " '111010011010': 2,\n",
       " '001011010110': 1,\n",
       " '011000100001': 2,\n",
       " '001100110000': 1,\n",
       " '110001101110': 1,\n",
       " '110100000000': 1,\n",
       " '110001010110': 3,\n",
       " '001010110010': 4,\n",
       " '101100111110': 1,\n",
       " '001110111110': 1,\n",
       " '110110010010': 1,\n",
       " '010011000110': 15,\n",
       " '000100101001': 4,\n",
       " '011010101110': 1,\n",
       " '001110001010': 144,\n",
       " '000000101111': 20,\n",
       " '000001011110': 58,\n",
       " '010001011001': 5,\n",
       " '110110010110': 1,\n",
       " '101100101001': 2,\n",
       " '000000000001': 2,\n",
       " '100000100000': 4,\n",
       " '101011101010': 7,\n",
       " '000100011001': 2,\n",
       " '100001101010': 526,\n",
       " '011001010010': 7,\n",
       " '011010011011': 6,\n",
       " '100000100111': 4,\n",
       " '100110001001': 2,\n",
       " '100101011010': 73,\n",
       " '001001100110': 4,\n",
       " '000010000011': 6,\n",
       " '110000101110': 11,\n",
       " '101001011110': 5,\n",
       " '001010000011': 13,\n",
       " '010010000011': 40,\n",
       " '100111000010': 3,\n",
       " '010000011000': 28,\n",
       " '101010000010': 7,\n",
       " '100000101010': 2076,\n",
       " '101010101011': 3,\n",
       " '000110111111': 1,\n",
       " '100100001010': 207,\n",
       " '110000110010': 6,\n",
       " '001111111110': 1,\n",
       " '101001000000': 1,\n",
       " '100011011110': 6,\n",
       " '001010010011': 2,\n",
       " '011101111010': 5,\n",
       " '101111001010': 7,\n",
       " '100001111011': 8,\n",
       " '011000100010': 14,\n",
       " '100101100111': 1,\n",
       " '110001111110': 4,\n",
       " '111000000101': 1,\n",
       " '001110011010': 37,\n",
       " '000001011100': 1,\n",
       " '100010100110': 1,\n",
       " '000010011001': 2,\n",
       " '001001001001': 33,\n",
       " '110100101010': 25,\n",
       " '110000001110': 15,\n",
       " '001010101110': 15,\n",
       " '001001111010': 183,\n",
       " '010010011111': 2,\n",
       " '001101011011': 8,\n",
       " '010010100110': 7,\n",
       " '110001100010': 1,\n",
       " '001110101000': 2,\n",
       " '110000101011': 41,\n",
       " '011010011010': 47,\n",
       " '100111101010': 10,\n",
       " '010000000011': 289,\n",
       " '010110000010': 15,\n",
       " '010000100011': 44,\n",
       " '010011111011': 4,\n",
       " '110110001110': 2,\n",
       " '010011001110': 36,\n",
       " '100001011011': 23,\n",
       " '100101001011': 18,\n",
       " '010011010110': 2,\n",
       " '010000001110': 70,\n",
       " '100000011111': 16,\n",
       " '110000101111': 3,\n",
       " '001100000111': 2,\n",
       " '001011011011': 10,\n",
       " '101000100010': 11,\n",
       " '010010010010': 38,\n",
       " '000000011000': 4,\n",
       " '011000000111': 3,\n",
       " '001000001110': 44,\n",
       " '000001001101': 5,\n",
       " '110010000011': 3,\n",
       " '000100110110': 3,\n",
       " '110101001010': 61,\n",
       " '010110101010': 86,\n",
       " '010000111100': 3,\n",
       " '100010011000': 9,\n",
       " '001100011010': 38,\n",
       " '001100001000': 14,\n",
       " '011010011000': 2,\n",
       " '110100100001': 1,\n",
       " '000001011111': 8,\n",
       " '101111001111': 1,\n",
       " '010010001111': 24,\n",
       " '011011001011': 5,\n",
       " '010101101010': 106,\n",
       " '001101101010': 33,\n",
       " '011100011010': 18,\n",
       " '010100101001': 3,\n",
       " '101101011011': 3,\n",
       " '100110000010': 10,\n",
       " '000000101011': 45,\n",
       " '100000001111': 52,\n",
       " '100000001000': 76,\n",
       " '011010001011': 28,\n",
       " '101000101110': 10,\n",
       " '100000000110': 9,\n",
       " '001101001000': 6,\n",
       " '001010000111': 1,\n",
       " '000010100100': 1,\n",
       " '101000010010': 3,\n",
       " '001000011000': 10,\n",
       " '010000010011': 40,\n",
       " '101101101011': 1,\n",
       " '011000110011': 1,\n",
       " '100010000000': 1,\n",
       " '001001101010': 546,\n",
       " '010001000000': 9,\n",
       " '110011101010': 12,\n",
       " '011100000010': 7,\n",
       " '110010000010': 24,\n",
       " '110111001010': 9,\n",
       " '110000001001': 3,\n",
       " '000000110011': 2,\n",
       " '011010001000': 6,\n",
       " '000100110010': 4,\n",
       " '001111101110': 1,\n",
       " '011001001001': 9,\n",
       " '100000100110': 27,\n",
       " '010011000111': 3,\n",
       " '000001000010': 234,\n",
       " '100010101000': 9,\n",
       " '010101100010': 8,\n",
       " '110100011011': 6,\n",
       " '000011101110': 9,\n",
       " '001000011101': 2,\n",
       " '010010111011': 26,\n",
       " '010011000010': 39,\n",
       " '100101011000': 1,\n",
       " '101101101010': 10,\n",
       " '100111011010': 17,\n",
       " '000000101110': 202,\n",
       " '011000000010': 22,\n",
       " '100001010010': 32,\n",
       " '010110100010': 4,\n",
       " '010010101011': 70,\n",
       " '100001001101': 1,\n",
       " '101010001010': 176,\n",
       " '010110010010': 5,\n",
       " '100001000010': 277,\n",
       " '001101000010': 20,\n",
       " '101100111011': 1,\n",
       " '000110111010': 11,\n",
       " '001001101000': 11,\n",
       " '001011011110': 3,\n",
       " '000001010011': 4,\n",
       " '010110111110': 1,\n",
       " '000011011110': 16,\n",
       " '000101000010': 19,\n",
       " '100011000001': 2,\n",
       " '100101011110': 4,\n",
       " '110000011110': 3,\n",
       " '001110000011': 1,\n",
       " '110101111010': 3,\n",
       " '110001011000': 4,\n",
       " '001101001001': 4,\n",
       " '100100011011': 28,\n",
       " '000100001100': 2,\n",
       " '000100010110': 2,\n",
       " '101010001110': 10,\n",
       " '010010011100': 1,\n",
       " '010001000111': 6,\n",
       " '000101001010': 441,\n",
       " '011101101011': 2,\n",
       " '110101001111': 1,\n",
       " '111001001010': 91,\n",
       " '011000000011': 20,\n",
       " '010101001000': 15,\n",
       " '000001001001': 10,\n",
       " '101000111010': 30,\n",
       " '000000001010': 256,\n",
       " '011001101010': 86,\n",
       " '101010001011': 19,\n",
       " '100010001100': 1,\n",
       " '110001000111': 1,\n",
       " '100100001111': 6,\n",
       " '010000100111': 5,\n",
       " '100101110110': 1,\n",
       " '100110100110': 1,\n",
       " '000000001111': 100,\n",
       " '110110000011': 1,\n",
       " '001110110011': 1,\n",
       " '110000001111': 7,\n",
       " '000000000011': 57,\n",
       " '000101010110': 1,\n",
       " '010101011011': 14,\n",
       " '010011010010': 16,\n",
       " '001000100010': 107,\n",
       " '110101101010': 8,\n",
       " '011000011010': 42,\n",
       " '000000100000': 2,\n",
       " '010010111110': 10,\n",
       " '010111001110': 7,\n",
       " '000010100011': 3,\n",
       " '010011011110': 8,\n",
       " '000100010011': 1,\n",
       " '011100000011': 2,\n",
       " '100010011110': 12,\n",
       " '001100010011': 2,\n",
       " '000010001010': 449,\n",
       " '011000101110': 11,\n",
       " '011001101011': 9,\n",
       " '100011101110': 3,\n",
       " '010001001010': 12090,\n",
       " '001000101001': 21,\n",
       " '000111001100': 2,\n",
       " '101100011000': 2,\n",
       " '001010100011': 5,\n",
       " '011000011000': 4,\n",
       " '001010001111': 7,\n",
       " '000011010011': 1,\n",
       " '000100101111': 3,\n",
       " '000100011010': 56,\n",
       " '110000010010': 6,\n",
       " '010001101001': 13,\n",
       " '000110001110': 35,\n",
       " '111011001010': 18,\n",
       " '000110000110': 3,\n",
       " '101000000011': 23,\n",
       " '010000101010': 5009,\n",
       " '101110001000': 1,\n",
       " '100101010011': 1,\n",
       " '100010000110': 26,\n",
       " '010000011101': 2,\n",
       " '001000011001': 6,\n",
       " '010101001011': 53,\n",
       " '110000111111': 2,\n",
       " '000000011111': 16,\n",
       " '001101011010': 68,\n",
       " '110110110010': 2,\n",
       " '011010001110': 12,\n",
       " '011011101010': 12,\n",
       " '010100101011': 50,\n",
       " '110100001011': 20,\n",
       " '010011000011': 5,\n",
       " '011100010010': 1,\n",
       " '010010101000': 14,\n",
       " '000100000011': 10,\n",
       " '111010101110': 1,\n",
       " '000011111010': 5,\n",
       " '010000001010': 1583,\n",
       " '001001100111': 3,\n",
       " '010000101000': 111,\n",
       " '000110001011': 17,\n",
       " '001011101010': 55,\n",
       " '001100000010': 31,\n",
       " '001001101011': 28,\n",
       " '000101110010': 2,\n",
       " '101110111010': 1,\n",
       " '010100000110': 9,\n",
       " '001011001100': 2,\n",
       " '100011001001': 6,\n",
       " '011110001010': 53,\n",
       " '011100101000': 1,\n",
       " '100010010000': 1,\n",
       " '110010110010': 2,\n",
       " '011010000010': 19,\n",
       " '100010101101': 1,\n",
       " '001011010011': 3,\n",
       " '011111001010': 11,\n",
       " '001110011001': 1,\n",
       " '101100111010': 10,\n",
       " '010111001011': 13,\n",
       " '100010111011': 9,\n",
       " '010010011010': 509,\n",
       " '110010001110': 14,\n",
       " '000000110110': 2,\n",
       " '010010000100': 1,\n",
       " '011101010010': 2,\n",
       " '001010101111': 1,\n",
       " '010000011001': 12,\n",
       " '100001101011': 40,\n",
       " '101001011011': 5,\n",
       " '110100011010': 13,\n",
       " '001101001110': 24,\n",
       " '001001111001': 1,\n",
       " '100011000010': 21,\n",
       " '011011000011': 1,\n",
       " '010100011011': 44,\n",
       " '000010000110': 15,\n",
       " '001100001010': 233,\n",
       " '100010110010': 7,\n",
       " '011100001010': 39,\n",
       " '100101100010': 3,\n",
       " '101000011010': 28,\n",
       " '011110001011': 8,\n",
       " '010000101001': 52,\n",
       " '000000001000': 23,\n",
       " '100011001010': 394,\n",
       " '111010001010': 42,\n",
       " '010110011011': 11,\n",
       " ...}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "counts_list = [counts_list]\n",
    "qc_occ_nums = []\n",
    "for i in range(N_t):\n",
    "    expecz = np.zeros(N_s)\n",
    "    num_anc_0 = 0\n",
    "    for key in counts_list[i]:\n",
    "        if key[N_s+1] == '0' and key[N_s+3] == '0':\n",
    "            num_anc_0 += counts_list[i][key]\n",
    "            for j in range(N_s):\n",
    "                if key[j] == '0':\n",
    "                    expecz[j] += counts_list[i][key]\n",
    "                else:\n",
    "                    expecz[j] -= counts_list[i][key]\n",
    "    qc_occ_nums.append((1 - expecz/num_anc_0) / 2)\n",
    "qc_occ_nums = np.array(qc_occ_nums)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '(a) Initial State')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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l1+WJP31r3/VyZMn9d5772nv3r3KyMjQP/3TP2nx4sU3PykAAEAD1St4unfvrtjYWMXGxmrIkCEaMmSIunfv7ny+devWGjp0qIYOHepcFhsbS/AAAACPqlfwPPbYY8rLy9Mrr7yip556SlVVVQoJCdGQIUNcIigiIsK5zdtvv+32oQEAAOqjXsHzwAMPOP9cUVGh/Px85eXlKS8vT7t27dKKFSt0/fp1ff311871WrVq5b5pAQAAGqDB1/DY7XYlJCRoyJAh2rNnj65fv64zZ864fD4PAACAN2jQbelfffWVduzYoenTpyskJESpqany9fXVpk2bdPHiRXfPCAAAcFPqdYZn69at2r59u9544w21b99ekydP1vbt2zV69Gj5+vo21owAAAA3pV7BM23aNHXr1k3Lly/XvffeKz+/m7qrHQAAoEnUq1hGjhyp/Px83X///frFL36hQYMGudyhNWDAACIIAOARfIUGbqRedXLw4EFJ0p/+9Cfl5uY679D6r//6L12+fFl2u10DBw7UsWPHGmVYAACAhmjQ6Zg+ffqoT58+uvvuu53Lzpw5oxMnTuidd95x23AAAADuUOfgKSwsVMeOHWW322t8vkePHurRo4emTJkiSTp9+rR69uzpnikBAABuQp1vS9+2bZs6deqkyZMna8OGDTXefn706FE9/vjj6t+/v6Kjo906KAAAQEPVOXjS0tL07rvvauTIkdq4caNuueUW3X777VqyZInmzJmjrl27atKkSSouLtbSpUv5PB4AAOA16nUNT+/evZWenq709HT95S9/0WuvvaZdu3YpMjJS27dvV2Jiomw2W2PNCgAA0CANvoe8c+fOSklJUUpKijvnAQAAcLsGfbUEAABAc0LwAAAA4/GxyABarOb6ybwSn84L1BdneAAAgPEIHgAAYDyCBwAAGI9reIB6aq7XfXDNB4CWjOBpAvyCBADAs3hLCwAAGI/gAQAAxiN4AACA8QgeAABgPIIHAAAYj+ABAADGI3gAAIDxCB4AAGA8ggcAABiP4AEAAMYjeAAAgPEIHgAAYDyCBwAAGI/gAQAAxiN4AACA8QgeAABgPIIHAAAYj+ABAADGI3gAAIDxCB4AAGA8ggcAABiP4AEAAMYjeAAAgPEIHgAAYDyCBwAAGI/gAQAAxvPa4Fm1apUiIyMVEBCghIQEHTt2rNZ1161bp5EjR6pjx47q2LGjkpKSbrg+AABoWbwyeLZu3ar09HRlZGQoLy9P0dHRSk5OVnFxcY3rHzhwQNOmTdP+/ft15MgRhYeHa+zYsfr888+beHIAAOCNvDJ4srKyNGfOHKWmpioqKkpr1qxRmzZttH79+hrXf+mll3T//fcrJiZGffv21fPPPy+Hw6GcnJwmnhwAAHgjrwueyspK5ebmKikpybnMx8dHSUlJOnLkSJ32ce3aNV2/fl2dOnWqdZ2KigqVlZW5PAAAgJm8LnhKSkpUVVWl0NBQl+WhoaEqLCys0z4effRRdevWzSWaviszM1NBQUHOR3h4+E3NDQAAvJfXBc/NWrp0qbZs2aIdO3YoICCg1vXmz5+v0tJS5+P8+fNNOCUAAGhKfp4e4LuCg4Pl6+uroqIil+VFRUUKCwu74bYrVqzQ0qVLtW/fPg0aNOiG69rtdtnt9pueFwAAeD+vO8Pj7++v2NhYlwuOv70AOTExsdbtli1bpsWLF2v37t2Ki4trilEBAEAz4XVneCQpPT1dKSkpiouLU3x8vLKzs1VeXq7U1FRJ0owZM9S9e3dlZmZKkp5++mktWLBAmzdvVmRkpPNan3bt2qldu3YeOw4AAOAdvDJ4pk6dqosXL2rBggUqLCxUTEyMdu/e7byQ+dy5c/Lx+dvJqdWrV6uyslI//vGPXfaTkZGhJ598silHBwAAXsgrg0eS0tLSlJaWVuNzBw4ccPm5oKCg8QcCAADNltddwwMAAOBuBA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMJ6fpwcAAAB1F/nY654eoUEKlo736OtzhgcAABiP4AEAAMYjeAAAgPEIHgAAYDyCBwAAGI/gAQAAxiN4AACA8QgeAABgPIIHAAAYj+ABAADGI3gAAIDxCB4AAGA8ggcAABiP4AEAAMYjeAAAgPEIHgAAYDyCBwAAGI/gAQAAxiN4AACA8QgeAABgPIIHAAAYj+ABAADGI3gAAIDxCB4AAGA8rw2eVatWKTIyUgEBAUpISNCxY8dqXfeDDz7Qj370I0VGRspmsyk7O7vpBgUAAF7Pz9MD1GTr1q1KT0/XmjVrlJCQoOzsbCUnJ+vUqVPq0qVLtfWvXbumnj17asqUKXrooYc8MDFgnsjHXvf0CA1SsHS8p0cA4IW88gxPVlaW5syZo9TUVEVFRWnNmjVq06aN1q9fX+P6Q4cO1fLly3X33XfLbrc38bQAAMDbeV3wVFZWKjc3V0lJSc5lPj4+SkpK0pEjRzw4GQAAaK687i2tkpISVVVVKTQ01GV5aGioPv74Y7e9TkVFhSoqKpw/l5WVuW3fAADAu3jdGZ6mkpmZqaCgIOcjPDzc0yMBAIBG4nXBExwcLF9fXxUVFbksLyoqUlhYmNteZ/78+SotLXU+zp8/77Z9AwAA7+J1wePv76/Y2Fjl5OQ4lzkcDuXk5CgxMdFtr2O32xUYGOjyAAAAZvK6a3gkKT09XSkpKYqLi1N8fLyys7NVXl6u1NRUSdKMGTPUvXt3ZWZmSvrmQucPP/zQ+efPP/9c+fn5ateunXr37u2x4wAAAN7BK4Nn6tSpunjxohYsWKDCwkLFxMRo9+7dzguZz507Jx+fv52cunDhggYPHuz8ecWKFVqxYoVGjRqlAwcONPX4AADAy3hl8EhSWlqa0tLSanzuuxETGRkpy7KaYCoAANAced01PAAAAO5G8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA8AADAewQMAAIxH8AAAAOMRPAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwntcGz6pVqxQZGamAgAAlJCTo2LFjN1z/v//7v9W3b18FBARo4MCB2rVrVxNNCgAAvJ1XBs/WrVuVnp6ujIwM5eXlKTo6WsnJySouLq5x/cOHD2vatGmaPXu23nnnHU2aNEmTJk3SyZMnm3hyAADgjbwyeLKysjRnzhylpqYqKipKa9asUZs2bbR+/foa11+5cqV++MMf6pFHHlG/fv20ePFiDRkyRL/5zW+aeHIAAOCNvC54KisrlZubq6SkJOcyHx8fJSUl6ciRIzVuc+TIEZf1JSk5ObnW9QEAQMvi5+kBvqukpERVVVUKDQ11WR4aGqqPP/64xm0KCwtrXL+wsLDW16moqFBFRYXz59LSUklSWVlZQ0evlaPimtv32RTq+78Fx+ndOM7qmusxSi3jOPl3tmYt5Tjru1/Lsm64ntcFT1PJzMzUwoULqy0PDw/3wDTeKSjb0xM0DY7TLBynOVrCMUocp7tcuXJFQUFBtT7vdcETHBwsX19fFRUVuSwvKipSWFhYjduEhYXVa31Jmj9/vtLT050/OxwOXbp0SZ07d5bNZruJI2g6ZWVlCg8P1/nz5xUYGOjpcRoNx2mWlnCcLeEYJY7TNM31OC3L0pUrV9StW7cbrud1wePv76/Y2Fjl5ORo0qRJkr6JkZycHKWlpdW4TWJionJycvTggw86l+3du1eJiYm1vo7dbpfdbndZ1qFDh5sd3yMCAwOb1b+cDcVxmqUlHGdLOEaJ4zRNczzOG53Z+ZbXBY8kpaenKyUlRXFxcYqPj1d2drbKy8uVmpoqSZoxY4a6d++uzMxMSdK8efM0atQoPfPMMxo/fry2bNmiEydOaO3atZ48DAAA4CW8MnimTp2qixcvasGCBSosLFRMTIx2797tvDD53Llz8vH52w1mw4cP1+bNm/XEE0/o8ccfV58+fbRz504NGDDAU4cAAAC8iFcGjySlpaXV+hbWgQMHqi2bMmWKpkyZ0shTeRe73a6MjIxqb82ZhuM0S0s4zpZwjBLHaRrTj9Nmfd99XAAAAM2c133wIAAAgLsRPAAAwHgEDwAAMB7BAwAAjEfwNGOrVq1SZGSkAgIClJCQoGPHjnl6JLd66623NGHCBHXr1k02m007d+709Ehul5mZqaFDh6p9+/bq0qWLJk2apFOnTnl6LLdbvXq1Bg0a5PxAs8TERL3xxhueHqvRLV26VDabzeVDUU3w5JNPymazuTz69u3r6bEaxeeff6577rlHnTt3VuvWrTVw4ECdOHHC02O5VWRkZLV/njabTXPnzvX0aG5F8DRTW7duVXp6ujIyMpSXl6fo6GglJyeruLjY06O5TXl5uaKjo7Vq1SpPj9JoDh48qLlz5+rtt9/W3r17df36dY0dO1bl5eWeHs2tbrnlFi1dulS5ubk6ceKEfvCDH+iuu+7SBx984OnRGs3x48f13HPPadCgQZ4epVH0799fX3zxhfNx6NAhT4/kdl9++aVGjBihVq1a6Y033tCHH36oZ555Rh07dvT0aG51/Phxl3+We/fulSTzPurFQrMUHx9vzZ071/lzVVWV1a1bNyszM9ODUzUeSdaOHTs8PUajKy4utiRZBw8e9PQoja5jx47W888/7+kxGsWVK1esPn36WHv37rVGjRplzZs3z9MjuVVGRoYVHR3t6TEa3aOPPmrdfvvtnh6jyc2bN8/q1auX5XA4PD2KW3GGpxmqrKxUbm6ukpKSnMt8fHyUlJSkI0eOeHAy3KzS0lJJUqdOnTw8SeOpqqrSli1bVF5efsPvu2vO5s6dq/Hjx7v8HTXNn/70J3Xr1k09e/bU9OnTde7cOU+P5Hb/8z//o7i4OE2ZMkVdunTR4MGDtW7dOk+P1agqKyv14osvatasWc3mi7TriuBphkpKSlRVVeX8qo1vhYaGqrCw0ENT4WY5HA49+OCDGjFihJFfi/L++++rXbt2stvt+ulPf6odO3YoKirK02O53ZYtW5SXl+f8rj8TJSQkaOPGjdq9e7dWr16tM2fOaOTIkbpy5YqnR3Or06dPa/Xq1erTp4/27Nmjn/3sZ/r5z3+u3/3ud54erdHs3LlTly9f1syZMz09itt57VdLAC3N3LlzdfLkSSOvhZCk2267Tfn5+SotLdW2bduUkpKigwcPGhU958+f17x587R3714FBAR4epxGM27cOOefBw0apISEBEVEROjll1/W7NmzPTiZezkcDsXFxWnJkiWSpMGDB+vkyZNas2aNUlJSPDxd43jhhRc0btw4devWzdOjuB1neJqh4OBg+fr6qqioyGV5UVGRwsLCPDQVbkZaWppee+017d+/X7fccounx2kU/v7+6t27t2JjY5WZmano6GitXLnS02O5VW5uroqLizVkyBD5+fnJz89PBw8e1K9//Wv5+fmpqqrK0yM2ig4dOugf/uEf9Omnn3p6FLfq2rVrtSDv16+fkW/fSdLZs2e1b98+3XvvvZ4epVEQPM2Qv7+/YmNjlZOT41zmcDiUk5Nj7DURprIsS2lpadqxY4d+//vfq0ePHp4eqck4HA5VVFR4egy3GjNmjN5//33l5+c7H3FxcZo+fbry8/Pl6+vr6REbxdWrV/XZZ5+pa9eunh7FrUaMGFHtYyI++eQTRUREeGiixrVhwwZ16dJF48eP9/QojYK3tJqp9PR0paSkKC4uTvHx8crOzlZ5eblSU1M9PZrbXL161eX/MZ45c0b5+fnq1KmTbr31Vg9O5j5z587V5s2b9eqrr6p9+/bOa7CCgoLUunVrD0/nPvPnz9e4ceN066236sqVK9q8ebMOHDigPXv2eHo0t2rfvn2166/atm2rzp07G3Vd1sMPP6wJEyYoIiJCFy5cUEZGhnx9fTVt2jRPj+ZWDz30kIYPH64lS5boX//1X3Xs2DGtXbtWa9eu9fRobudwOLRhwwalpKTIz8/QNPD0bWJouGeffda69dZbLX9/fys+Pt56++23PT2SW+3fv9+SVO2RkpLi6dHcpqbjk2Rt2LDB06O51axZs6yIiAjL39/fCgkJscaMGWO9+eabnh6rSZh4W/rUqVOtrl27Wv7+/lb37t2tqVOnWp9++qmnx2oU//u//2sNGDDAstvtVt++fa21a9d6eqRGsWfPHkuSderUKU+P0mhslmVZnkktAACApsE1PAAAwHgEDwAAMB7BAwAAjEfwAAAA4xE8AADAeAQPAAAwHsEDAACMR/AAAADjETwAAMB4BA+AZm/06NF68MEHG2XfjzzyiCZMmNAo+wbQdPhqCQDN3qVLl9SqVSu1b99e0jcBFBMTo+zs7Jve9+XLl+Xr6+vcN4DmydCvRAXQknTq1KnR9t2hQ4dG2zeApsNbWgCahW3btmngwIFq3bq1OnfurKSkJJWXl0tyfUtr5syZOnjwoFauXCmbzSabzaaCggI5HA5lZmaqR48eat26taKjo7Vt27YbvmZJSYlsNptOnjzZ2IcHoJFxhgeA1/viiy80bdo0LVu2TJMnT9aVK1f0hz/8QTW9I79y5Up98sknGjBggBYtWiRJCgkJUWZmpl588UWtWbNGffr00VtvvaV77rlHISEhGjVqVI2v++6778put6tv376NenwAGh/BA8DrffHFF/r666/1L//yL4qIiJAkDRw4sMZ1g4KC5O/vrzZt2igsLEySVFFRoSVLlmjfvn1KTEyUJPXs2VOHDh3Sc889d8Pg6d+/v/z8+E8l0NzxtxiA14uOjtaYMWM0cOBAJScna+zYsfrxj3+sjh071mn7Tz/9VNeuXdOdd97psryyslKDBw+udbv8/HzFxMTczOgAvATBA8Dr+fr6au/evTp8+LDefPNNPfvss/rlL3+po0ePqkePHt+7/dWrVyVJr7/+urp37+7ynN1ur3W7d999V7Nnz7654QF4BS5aBtAs2Gw2jRgxQgsXLtQ777wjf39/7dixo8Z1/f39VVVV5fw5KipKdrtd586dU+/evV0e4eHhNe6jsrJSH330kaKjoxvleAA0Lc7wAPB6R48eVU5OjsaOHasuXbro6NGjunjxovr161fj+pGRkTp69KgKCgrUrl07derUSQ8//LAeeughORwO3X777SotLdUf//hHBQYGKiUlpdo+PvroI12/fp3gAQxB8ADweoGBgXrrrbeUnZ2tsrIyRURE6JlnntG4ceNqXP/hhx9WSkqKoqKi9Ne//lVnzpzR4sWLnXdrnT59Wh06dNCQIUP0+OOP17iP/Px8RURE8Dk8gCH4pGUAqEFaWpqKi4v18ssve3oUAG7ANTwA8He++uor5ebmavv27UpOTvb0OADchOABgL+TnZ2tpKQk3XXXXZoxY4anxwHgJrylBQAAjMcZHgAAYDyCBwAAGI/gAQAAxiN4AACA8QgeAABgPIIHAAAYj+ABAADGI3gAAIDxCB4AAGA8ggcAABiP4AEAAMb7P8ILxlhfJsx1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(range(N_s), qc_occ_nums[0])\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'$\\langle N_j \\rangle$')\n",
    "plt.title(\"(a) Initial State\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x7cae4a837110>"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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dgh2UZRu289fbeVzI0vtEBSLbmr5GQHOZu5F5//9FritdgiKCUUTMm09l32mf9Z2qv/l3bVrFyZMmID9+/dj+/btuHXrFgYOHIji4mK1QyMiIqJqqN4isXXrVrOvV65ciaZNmyItLQ19+vRRKSoiIiJl2LWhkvz8fACw6YEhREREtY0a0z/VUKsSCUmS8MILL6B3797o1KmTxW1KS0vNnnxWUFBQU+ERERHRX6g+RuLPJkyYgOPHj2PdunWVbmMwGMyeghYSElKDERIREVnHXo8Rr+1qTSKRmJiIr7/+Gjt27EDz5s0r3W7atGnIz883lezs7BqMkoiIyDoS/hgnIauofQFWUr1rQwiBiRMnYuPGjdi5cydatmxZ5fZ6vd5hj1AlIiIi26ieSEyYMAFr167FV199BW9vb9MDQ3x9feHh4aFydERERPJwHYkasnjxYuTn56Nv374ICgoylfXr16sdGhERkWxCSbeGwhkfNUn1FgnhLN8pIiIiGwihsEXCSf48qt4iQURERM5L9RYJIiKiukitx4jXNCYSREREDnBnCqf8/glnWSKbXRtEREQkG1skiIiIHKC+TP9kIkFEROQASlenZNcGERER1XlskSAiInIA8b9/SvZ3BkwkiIiIHIBdG0RERETVYIsEERGRA3BBKiIiIpJNCIVjJJzkYRtMJIiIiBygvrRIcIwEERERycYWCSIiIgdg1wYRERHJJqCse8I50og6lEj46VvBRePcl/O3fnvUDkEx/YEDaodgF99m3q92CHbxyPeL1Q5BsXsGlqkdgl00+6m72iEoln1zv9ohKCYgYBTFaodRpzj3X14iIqJaShJC4WPEnaNNgokEERGRA9SXJbI5a4OIiIhkY4sEERGRA9SXdSSYSBARETmABIVjJNi1QURERHUdWySIiIgcgLM2iIiISLb6MmuDiQQREZEDcIwEERERUTXYIkFEROQA9aVFgokEERGRA9SXMRLs2iAiIiLZ2CJBRETkAEJh14aztEgwkSAiInIASSNBo5G/0LXkJItks2uDiIiIZFM9kdi9ezcGDx6M4OBgaDQafPnll2qHREREpFj5rA0lxRmonkgUFxcjIiICixYtUjsUIiIiu1GeRjhH14bqYyTi4uIQFxendhhEREQkg+qJBBERUV0kAdAoWpDKOThdIlFaWorS0lLT1wUFBSpGQ0RE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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, N_s-1, N_s)\n",
    "y = np.linspace(0, (N_t - 1) * dt, N_t)\n",
    "X, Y = np.meshgrid(x, y)\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "plt.pcolormesh(X, Y, qc_occ_nums, cmap='inferno')\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'time $t$')\n",
    "title = r'(a) QSim $\\langle N_j (t) \\rangle$: $N_s = $' + str(N_s)\n",
    "title += r', $J = $' + str(J)\n",
    "title += r', $h = $' + str(h)\n",
    "title += r', $g = $' + str(g)\n",
    "title += r', $\\Delta t=$' + str(dt)\n",
    "plt.title(title)\n",
    "plt.colorbar()\n",
    "# plt.savefig('qc-occ-nums.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 8 artists>"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAHGJJREFUeJzt3X9sXfV5+PHHdmqbNIkJpNgkmHj8WENGY1O78QJjVKvXDEWoTFvnIbZ4Lo20NdHSWZ3abFXcH1qdrTQK66Kk0AamMpRsU6Hb2oalHmFCdRVwFg3oykbXkBRqJ9FaOxjJruz7/aOqkb/ENDe55sHO6yUdKT75nHufg7H8zrnn2mWFQqEQAABJyrMHAAAubGIEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEg1L3uAszExMREvvfRSLFy4MMrKyrLHAQDOQqFQiNOnT8fSpUujvHz66x+zIkZeeumlqK+vzx4DADgHx48fjyuuuGLav58VMbJw4cKI+OnJLFq0KHkaAOBsDA8PR319/eT38enMihj52UszixYtEiMAMMv8vFss3MAKAKQSIwBAKjECAKQSIwBAKjECAKQSIwBAKjECAKQSIwBAKjECAKQSIwBAKjECAKQSIwBAKjECAKQSIwBAqnnZA/DGaPjY17JHOCdHt63LHgGAGSZGABLN1n8oRPjHAqXjZRoAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAINU5xcjOnTujoaEhqquro7W1NQ4dOjTt2gceeCDKysqmbNXV1ec8MAAwtxQdI/v27Yuurq7o7u6Ow4cPR2NjY6xduzZOnDgx7TGLFi2KH/7wh5PbCy+8cF5DAwBzR9Exsn379tiwYUN0dnbGypUrY/fu3TF//vzYs2fPtMeUlZVFXV3d5FZbW3teQwMAc0dRMTI2Nhb9/f3R1tb26gOUl0dbW1v09fVNe9zLL78cy5cvj/r6+njf+94Xzz777Os+z+joaAwPD0/ZAIC5qagYOXXqVIyPj7/mykZtbW0MDAyc8Zi3v/3tsWfPnvjqV78aDz74YExMTMSNN94YP/jBD6Z9np6enqipqZnc6uvrixkTAJhFZvzdNGvWrIn169dHU1NT3HLLLfGVr3wl3va2t8UXvvCFaY/ZsmVLDA0NTW7Hjx+f6TEBgCTzilm8ZMmSqKioiMHBwSn7BwcHo66u7qwe4y1veUvccMMN8fzzz0+7pqqqKqqqqooZDQCYpYq6MlJZWRnNzc3R29s7uW9iYiJ6e3tjzZo1Z/UY4+Pj8fTTT8fll19e3KQAwJxU1JWRiIiurq7o6OiIlpaWWL16dezYsSNGRkais7MzIiLWr18fy5Yti56enoiI+NSnPhW//Mu/HNdcc038+Mc/js9+9rPxwgsvxAc/+MHSngkAMCsVHSPt7e1x8uTJ2Lp1awwMDERTU1Ps379/8qbWY8eORXn5qxdcfvSjH8WGDRtiYGAgFi9eHM3NzfGtb30rVq5cWbqzAABmrbJCoVDIHuLnGR4ejpqamhgaGopFixZljzMrNXzsa9kjnJOj29ZljwAzarZ+bUb4+uTnO9vv3343DQCQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQ6pxiZOfOndHQ0BDV1dXR2toahw4dOqvj9u7dG2VlZXH77befy9MCAHNQ0TGyb9++6Orqiu7u7jh8+HA0NjbG2rVr48SJE6973NGjR+MjH/lI3Hzzzec8LAAw9xQdI9u3b48NGzZEZ2dnrFy5Mnbv3h3z58+PPXv2THvM+Ph43HnnnfHJT34yrrrqqvMaGACYW4qKkbGxsejv74+2trZXH6C8PNra2qKvr2/a4z71qU/FZZddFnfddde5TwoAzEnzill86tSpGB8fj9ra2in7a2tr47vf/e4Zj3niiSfiS1/6Uhw5cuSsn2d0dDRGR0cnPx4eHi5mTABgFpnRd9OcPn06fv/3fz/uu+++WLJkyVkf19PTEzU1NZNbfX39DE4JAGQq6srIkiVLoqKiIgYHB6fsHxwcjLq6utes/973vhdHjx6N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M2psbCwefPDB+MAHPjBrfmns2RIjJXbq1KkYHx+f/Im0P1NbWxsDAwNJU1EKExMT8eEPfzhuuummOfkThJ9++ulYsGBBVFVVxR/+4R/Gww8/HCtXrsweq6T27t0bhw8fnvx1FXNRa2trPPDAA7F///7YtWtXfP/734+bb745Tp8+nT1aSf3v//5v7Nq1K6699tp49NFH44/+6I/ij//4j+Nv//Zvs0ebMY888kj8+Mc/jj/4gz/IHqXkiv5x8HCh2rhxYzzzzDNz8vX3iIi3v/3tceTIkRgaGop//Md/jI6Ojnj88cfnTJAcP348Nm/eHAcOHIjq6urscWbMrbfeOvnnVatWRWtrayxfvjz+/u//Pu66667EyUprYmIiWlpa4jOf+UxERNxwww3xzDPPxO7du6OjoyN5upnxpS99KW699dZYunRp9igl58pIiS1ZsiQqKipicHBwyv7BwcGoq6tLmorztWnTpviXf/mXeOyxx+KKK67IHmdGVFZWxjXXXBPNzc3R09MTjY2Ncc8992SPVTL9/f1x4sSJeOc73xnz5s2LefPmxeOPPx5//dd/HfPmzYvx8fHsEWfExRdfHL/4i78Yzz//fPYoJXX55Ze/JpSvu+66OfmSVETECy+8EN/85jfjgx/8YPYoM0KMlFhlZWU0NzdHb2/v5L6JiYno7e2dk6+/z3WFQiE2bdoUDz/8cPzbv/1b/MIv/EL2SG+YiYmJGB0dzR6jZN7znvfE008/HUeOHJncWlpa4s4774wjR45ERUVF9ogz4uWXX47vfe97cfnll2ePUlI33XTTa95m/9///d+xfPnypIlm1v333x+XXXZZrFu3LnuUGeFlmhnQ1dUVHR0d0dLSEqtXr44dO3bEyMhIdHZ2Zo9WMi+//PKUf2l9//vfjyNHjsQll1wSV155ZeJkpbVx48Z46KGH4qtf/WosXLhw8r6fmpqauOiii5KnK50tW7bErbfeGldeeWWcPn06HnrooTh48GA8+uij2aOVzMKFC19zr89b3/rWuPTSS+fUPUAf+chH4rbbbovly5fHSy+9FN3d3VFRURF33HFH9mgl9Sd/8idx4403xmc+85n4nd/5nTh06FDce++9ce+992aPVnITExNx//33R0dHR8ybN0e/bWe/nWeu+vznP1+48sorC5WVlYXVq1cXvv3tb2ePVFKPPfZYISJes3V0dGSPVlJnOseIKNx///3Zo5XUBz7wgcLy5csLlZWVhbe97W2F97znPYV//dd/zR5rxs3Ft/a2t7cXLr/88kJlZWVh2bJlhfb29sLzzz+fPdaM+Od//ufC9ddfX6iqqiqsWLGicO+992aPNCMeffTRQkQUnnvuuexRZkxZoVAo5GQQAIB7RgCAZGIEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEj1/wBqXUhue33MGAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(range(N_s), qc_occ_nums[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Larger systems'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "exact_occs = np.loadtxt(\"ising-approx-occs-N_s12-J0.4-h1-g0.3-width1.5-dt0.6.txt\", dtype=float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(15, 12)"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exact_occs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "Dimensions of C (15, 12) should be one smaller than X(8) and Y(14) while using shading='flat' see help(pcolormesh)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[103], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpcolormesh\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexact_occs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcmap\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43minferno\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m      2\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msite $j$\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m      3\u001b[0m plt\u001b[38;5;241m.\u001b[39mylabel(\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtime $t$\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.13/site-packages/matplotlib/pyplot.py:3740\u001b[0m, in \u001b[0;36mpcolormesh\u001b[0;34m(alpha, norm, cmap, vmin, vmax, colorizer, shading, antialiased, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   3726\u001b[0m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes\u001b[38;5;241m.\u001b[39mpcolormesh)\n\u001b[1;32m   3727\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mpcolormesh\u001b[39m(\n\u001b[1;32m   3728\u001b[0m     \u001b[38;5;241m*\u001b[39margs: ArrayLike,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m   3738\u001b[0m     \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m   3739\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m QuadMesh:\n\u001b[0;32m-> 3740\u001b[0m     __ret \u001b[38;5;241m=\u001b[39m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpcolormesh\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   3741\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3742\u001b[0m \u001b[43m        \u001b[49m\u001b[43malpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43malpha\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3743\u001b[0m \u001b[43m        \u001b[49m\u001b[43mnorm\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnorm\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3744\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcmap\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcmap\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3745\u001b[0m \u001b[43m        \u001b[49m\u001b[43mvmin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3746\u001b[0m \u001b[43m        \u001b[49m\u001b[43mvmax\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmax\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3747\u001b[0m \u001b[43m        \u001b[49m\u001b[43mcolorizer\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcolorizer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3748\u001b[0m \u001b[43m        \u001b[49m\u001b[43mshading\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mshading\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3749\u001b[0m \u001b[43m        \u001b[49m\u001b[43mantialiased\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mantialiased\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3750\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3751\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   3752\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   3753\u001b[0m     sci(__ret)\n\u001b[1;32m   3754\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m __ret\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.13/site-packages/matplotlib/__init__.py:1524\u001b[0m, in \u001b[0;36m_preprocess_data.<locals>.inner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1521\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m   1522\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21minner\u001b[39m(ax, \u001b[38;5;241m*\u001b[39margs, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m   1523\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1524\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1525\u001b[0m \u001b[43m            \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1526\u001b[0m \u001b[43m            \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcbook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1527\u001b[0m \u001b[43m            \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mcbook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1529\u001b[0m     bound \u001b[38;5;241m=\u001b[39m new_sig\u001b[38;5;241m.\u001b[39mbind(ax, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m   1530\u001b[0m     auto_label \u001b[38;5;241m=\u001b[39m (bound\u001b[38;5;241m.\u001b[39marguments\u001b[38;5;241m.\u001b[39mget(label_namer)\n\u001b[1;32m   1531\u001b[0m                   \u001b[38;5;129;01mor\u001b[39;00m bound\u001b[38;5;241m.\u001b[39mkwargs\u001b[38;5;241m.\u001b[39mget(label_namer))\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.13/site-packages/matplotlib/axes/_axes.py:6528\u001b[0m, in \u001b[0;36mAxes.pcolormesh\u001b[0;34m(self, alpha, norm, cmap, vmin, vmax, colorizer, shading, antialiased, *args, **kwargs)\u001b[0m\n\u001b[1;32m   6525\u001b[0m shading \u001b[38;5;241m=\u001b[39m shading\u001b[38;5;241m.\u001b[39mlower()\n\u001b[1;32m   6526\u001b[0m kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124medgecolors\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 6528\u001b[0m X, Y, C, shading \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pcolorargs\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mpcolormesh\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   6529\u001b[0m \u001b[43m                                    \u001b[49m\u001b[43mshading\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mshading\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   6530\u001b[0m coords \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mstack([X, Y], axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m   6532\u001b[0m kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msnap\u001b[39m\u001b[38;5;124m'\u001b[39m, mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpcolormesh.snap\u001b[39m\u001b[38;5;124m'\u001b[39m])\n",
      "File \u001b[0;32m~/miniconda3/lib/python3.13/site-packages/matplotlib/axes/_axes.py:6060\u001b[0m, in \u001b[0;36mAxes._pcolorargs\u001b[0;34m(self, funcname, shading, *args, **kwargs)\u001b[0m\n\u001b[1;32m   6058\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m shading \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mflat\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m   6059\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m (Nx, Ny) \u001b[38;5;241m!=\u001b[39m (ncols \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m, nrows \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m):\n\u001b[0;32m-> 6060\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDimensions of C \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mC\u001b[38;5;241m.\u001b[39mshape\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m should\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   6061\u001b[0m                         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m be one smaller than X(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mNx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) and Y(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mNy\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   6062\u001b[0m                         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m while using shading=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mflat\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   6063\u001b[0m                         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m see help(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfuncname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m   6064\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:    \u001b[38;5;66;03m# ['nearest', 'gouraud']:\u001b[39;00m\n\u001b[1;32m   6065\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m (Nx, Ny) \u001b[38;5;241m!=\u001b[39m (ncols, nrows):\n",
      "\u001b[0;31mTypeError\u001b[0m: Dimensions of C (15, 12) should be one smaller than X(8) and Y(14) while using shading='flat' see help(pcolormesh)"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGiCAYAAADA0E3hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAHMNJREFUeJzt3W9s3VX9wPFP29FbCLRM59ptFisoogIbbqwWJIipNoFM98A4wWxz4Y/gJLhGZWOwiug6EciiKy5MEB+omxAwxi1DrC4GqVnY1gRkg8DATWMLE9fOIi1rv78Hhvqr62C39M9O+3ol98GO59zvuR5G39x/LciyLAsAgAQUjvUGAACOlXABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkpF3uPzhD3+IefPmxfTp06OgoCB++ctfvuWabdu2xUc+8pHI5XLxvve9L+6///4hbBUAmOjyDpeurq6YOXNmNDU1HdP8F154IS677LK45JJLorW1Nb761a/GVVddFY888kjemwUAJraCt/NLFgsKCuLhhx+O+fPnH3XOjTfeGJs3b46nnnqqf+zzn/98HDx4MLZu3TrUSwMAE9Ckkb5AS0tL1NbWDhirq6uLr371q0dd093dHd3d3f1/7uvri1deeSXe+c53RkFBwUhtFQAYRlmWxaFDh2L69OlRWDg8b6sd8XBpa2uL8vLyAWPl5eXR2dkZ//73v+PEE088Yk1jY2PceuutI701AGAU7N+/P9797ncPy32NeLgMxYoVK6K+vr7/zx0dHXHaaafF/v37o7S0dAx3BgAcq87OzqisrIxTTjll2O5zxMOloqIi2tvbB4y1t7dHaWnpoM+2RETkcrnI5XJHjJeWlgoXAEjMcL7NY8S/x6Wmpiaam5sHjD366KNRU1Mz0pcGAMaZvMPlX//6V7S2tkZra2tE/Ofjzq2trbFv376I+M/LPIsWLeqff+2118bevXvjG9/4RuzZsyfuvvvu+MUvfhHLli0bnkcAAEwYeYfLE088Eeedd16cd955ERFRX18f5513XqxatSoiIv7+97/3R0xExHvf+97YvHlzPProozFz5sy4884740c/+lHU1dUN00MAACaKt/U9LqOls7MzysrKoqOjw3tcACARI/Hz2+8qAgCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGUMKl6ampqiqqoqSkpKorq6O7du3v+n8tWvXxgc+8IE48cQTo7KyMpYtWxavvfbakDYMAExceYfLpk2bor6+PhoaGmLnzp0xc+bMqKuri5deemnQ+T/72c9i+fLl0dDQELt374577703Nm3aFDfddNPb3jwAMLHkHS533XVXXH311bFkyZL40Ic+FOvXr4+TTjop7rvvvkHnP/7443HhhRfGFVdcEVVVVfGpT30qLr/88rd8lgYA4H/lFS49PT2xY8eOqK2t/e8dFBZGbW1ttLS0DLrmggsuiB07dvSHyt69e2PLli1x6aWXHvU63d3d0dnZOeAGADApn8kHDhyI3t7eKC8vHzBeXl4ee/bsGXTNFVdcEQcOHIiPfexjkWVZHD58OK699to3famosbExbr311ny2BgBMACP+qaJt27bF6tWr4+67746dO3fGQw89FJs3b47bbrvtqGtWrFgRHR0d/bf9+/eP9DYBgATk9YzLlClToqioKNrb2weMt7e3R0VFxaBrbrnllli4cGFcddVVERFxzjnnRFdXV1xzzTWxcuXKKCw8sp1yuVzkcrl8tgYATAB5PeNSXFwcs2fPjubm5v6xvr6+aG5ujpqamkHXvPrqq0fESVFRUUREZFmW734BgAksr2dcIiLq6+tj8eLFMWfOnJg7d26sXbs2urq6YsmSJRERsWjRopgxY0Y0NjZGRMS8efPirrvuivPOOy+qq6vjueeei1tuuSXmzZvXHzAAAMci73BZsGBBvPzyy7Fq1apoa2uLWbNmxdatW/vfsLtv374Bz7DcfPPNUVBQEDfffHP87W9/i3e9610xb968+M53vjN8jwIAmBAKsgRer+ns7IyysrLo6OiI0tLSsd4OAHAMRuLnt99VBAAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoYULk1NTVFVVRUlJSVRXV0d27dvf9P5Bw8ejKVLl8a0adMil8vFmWeeGVu2bBnShgGAiWtSvgs2bdoU9fX1sX79+qiuro61a9dGXV1dPPPMMzF16tQj5vf09MQnP/nJmDp1ajz44IMxY8aM+Mtf/hKnnnrqcOwfAJhACrIsy/JZUF1dHeeff36sW7cuIiL6+vqisrIyrr/++li+fPkR89evXx/f+973Ys+ePXHCCScMaZOdnZ1RVlYWHR0dUVpaOqT7AABG10j8/M7rpaKenp7YsWNH1NbW/vcOCgujtrY2WlpaBl3zq1/9KmpqamLp0qVRXl4eZ599dqxevTp6e3uPep3u7u7o7OwccAMAyCtcDhw4EL29vVFeXj5gvLy8PNra2gZds3fv3njwwQejt7c3tmzZErfcckvceeed8e1vf/uo12lsbIyysrL+W2VlZT7bBADGqRH/VFFfX19MnTo17rnnnpg9e3YsWLAgVq5cGevXrz/qmhUrVkRHR0f/bf/+/SO9TQAgAXm9OXfKlClRVFQU7e3tA8bb29ujoqJi0DXTpk2LE044IYqKivrHPvjBD0ZbW1v09PREcXHxEWtyuVzkcrl8tgYATAB5PeNSXFwcs2fPjubm5v6xvr6+aG5ujpqamkHXXHjhhfHcc89FX19f/9izzz4b06ZNGzRaAACOJu+Xiurr62PDhg3xk5/8JHbv3h3XXXdddHV1xZIlSyIiYtGiRbFixYr++dddd1288sorccMNN8Szzz4bmzdvjtWrV8fSpUuH71EAABNC3t/jsmDBgnj55Zdj1apV0dbWFrNmzYqtW7f2v2F33759UVj43x6qrKyMRx55JJYtWxbnnntuzJgxI2644Ya48cYbh+9RAAATQt7f4zIWfI8LAKRnzL/HBQBgLAkXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASMaQwqWpqSmqqqqipKQkqqurY/v27ce0buPGjVFQUBDz588fymUBgAku73DZtGlT1NfXR0NDQ+zcuTNmzpwZdXV18dJLL73puhdffDG+9rWvxUUXXTTkzQIAE1ve4XLXXXfF1VdfHUuWLIkPfehDsX79+jjppJPivvvuO+qa3t7e+MIXvhC33nprnH766W95je7u7ujs7BxwAwDIK1x6enpix44dUVtb+987KCyM2traaGlpOeq6b33rWzF16tS48sorj+k6jY2NUVZW1n+rrKzMZ5sAwDiVV7gcOHAgent7o7y8fMB4eXl5tLW1Dbrmsccei3vvvTc2bNhwzNdZsWJFdHR09N/279+fzzYBgHFq0kje+aFDh2LhwoWxYcOGmDJlyjGvy+VykcvlRnBnAECK8gqXKVOmRFFRUbS3tw8Yb29vj4qKiiPmP//88/Hiiy/GvHnz+sf6+vr+c+FJk+KZZ56JM844Yyj7BgAmoLxeKiouLo7Zs2dHc3Nz/1hfX180NzdHTU3NEfPPOuusePLJJ6O1tbX/9ulPfzouueSSaG1t9d4VACAveb9UVF9fH4sXL445c+bE3LlzY+3atdHV1RVLliyJiIhFixbFjBkzorGxMUpKSuLss88esP7UU0+NiDhiHADgreQdLgsWLIiXX345Vq1aFW1tbTFr1qzYunVr/xt29+3bF4WFvpAXABh+BVmWZWO9ibfS2dkZZWVl0dHREaWlpWO9HQDgGIzEz29PjQAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkIwhhUtTU1NUVVVFSUlJVFdXx/bt2486d8OGDXHRRRfF5MmTY/LkyVFbW/um8wEAjibvcNm0aVPU19dHQ0ND7Ny5M2bOnBl1dXXx0ksvDTp/27Ztcfnll8fvf//7aGlpicrKyvjUpz4Vf/vb39725gGAiaUgy7IsnwXV1dVx/vnnx7p16yIioq+vLyorK+P666+P5cuXv+X63t7emDx5cqxbty4WLVo06Jzu7u7o7u7u/3NnZ2dUVlZGR0dHlJaW5rNdAGCMdHZ2RllZ2bD+/M7rGZeenp7YsWNH1NbW/vcOCgujtrY2Wlpajuk+Xn311Xj99dfjHe94x1HnNDY2RllZWf+tsrIyn20CAONUXuFy4MCB6O3tjfLy8gHj5eXl0dbWdkz3ceONN8b06dMHxM//WrFiRXR0dPTf9u/fn882AYBxatJoXmzNmjWxcePG2LZtW5SUlBx1Xi6Xi1wuN4o7AwBSkFe4TJkyJYqKiqK9vX3AeHt7e1RUVLzp2jvuuCPWrFkTv/3tb+Pcc8/Nf6cAwISX10tFxcXFMXv27Ghubu4f6+vri+bm5qipqTnquttvvz1uu+222Lp1a8yZM2fouwUAJrS8Xyqqr6+PxYsXx5w5c2Lu3Lmxdu3a6OrqiiVLlkRExKJFi2LGjBnR2NgYERHf/e53Y9WqVfGzn/0sqqqq+t8Lc/LJJ8fJJ588jA8FABjv8g6XBQsWxMsvvxyrVq2Ktra2mDVrVmzdurX/Dbv79u2LwsL/PpHzwx/+MHp6euKzn/3sgPtpaGiIb37zm29v9wDAhJL397iMhZH4HDgAMLLG/HtcAADGknABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAwpXJqamqKqqipKSkqiuro6tm/f/qbzH3jggTjrrLOipKQkzjnnnNiyZcuQNgsATGx5h8umTZuivr4+GhoaYufOnTFz5syoq6uLl156adD5jz/+eFx++eVx5ZVXxq5du2L+/Pkxf/78eOqpp9725gGAiaUgy7IsnwXV1dVx/vnnx7p16yIioq+vLyorK+P666+P5cuXHzF/wYIF0dXVFb/+9a/7xz760Y/GrFmzYv369YNeo7u7O7q7u/v/3NHREaeddlrs378/SktL89kuADBGOjs7o7KyMg4ePBhlZWXDcp+T8pnc09MTO3bsiBUrVvSPFRYWRm1tbbS0tAy6pqWlJerr6weM1dXVxS9/+cujXqexsTFuvfXWI8YrKyvz2S4AcBz4xz/+MTbhcuDAgejt7Y3y8vIB4+Xl5bFnz55B17S1tQ06v62t7ajXWbFixYDYOXjwYLznPe+Jffv2DdsDZ2jeqGfPfo09Z3H8cBbHF+dx/HjjFZN3vOMdw3afeYXLaMnlcpHL5Y4YLysr8w/hcaK0tNRZHCecxfHDWRxfnMfxo7Bw+D7EnNc9TZkyJYqKiqK9vX3AeHt7e1RUVAy6pqKiIq/5AABHk1e4FBcXx+zZs6O5ubl/rK+vL5qbm6OmpmbQNTU1NQPmR0Q8+uijR50PAHA0eb9UVF9fH4sXL445c+bE3LlzY+3atdHV1RVLliyJiIhFixbFjBkzorGxMSIibrjhhrj44ovjzjvvjMsuuyw2btwYTzzxRNxzzz3HfM1cLhcNDQ2DvnzE6HIWxw9ncfxwFscX53H8GImzyPvj0BER69ati+9973vR1tYWs2bNiu9///tRXV0dEREf//jHo6qqKu6///7++Q888EDcfPPN8eKLL8b73//+uP322+PSSy8dtgcBAEwMQwoXAICx4HcVAQDJEC4AQDKECwCQDOECACTjuAmXpqamqKqqipKSkqiuro7t27e/6fwHHnggzjrrrCgpKYlzzjkntmzZMko7Hf/yOYsNGzbERRddFJMnT47JkydHbW3tW54dxy7fvxdv2LhxYxQUFMT8+fNHdoMTSL5ncfDgwVi6dGlMmzYtcrlcnHnmmf49NUzyPYu1a9fGBz7wgTjxxBOjsrIyli1bFq+99too7Xb8+sMf/hDz5s2L6dOnR0FBwZv+DsI3bNu2LT7ykY9ELpeL973vfQM+gXzMsuPAxo0bs+Li4uy+++7L/vznP2dXX311duqpp2bt7e2Dzv/jH/+YFRUVZbfffnv29NNPZzfffHN2wgknZE8++eQo73z8yfcsrrjiiqypqSnbtWtXtnv37uyLX/xiVlZWlv31r38d5Z2PP/mexRteeOGFbMaMGdlFF12UfeYznxmdzY5z+Z5Fd3d3NmfOnOzSSy/NHnvsseyFF17Itm3blrW2to7yzseffM/ipz/9aZbL5bKf/vSn2QsvvJA98sgj2bRp07Jly5aN8s7Hny1btmQrV67MHnrooSwisocffvhN5+/duzc76aSTsvr6+uzpp5/OfvCDH2RFRUXZ1q1b87rucREuc+fOzZYuXdr/597e3mz69OlZY2PjoPM/97nPZZdddtmAserq6uxLX/rSiO5zIsj3LP7X4cOHs1NOOSX7yU9+MlJbnDCGchaHDx/OLrjgguxHP/pRtnjxYuEyTPI9ix/+8IfZ6aefnvX09IzWFieMfM9i6dKl2Sc+8YkBY/X19dmFF144ovucaI4lXL7xjW9kH/7whweMLViwIKurq8vrWmP+UlFPT0/s2LEjamtr+8cKCwujtrY2WlpaBl3T0tIyYH5ERF1d3VHnc2yGchb/69VXX43XX399WH8T6EQ01LP41re+FVOnTo0rr7xyNLY5IQzlLH71q19FTU1NLF26NMrLy+Pss8+O1atXR29v72hte1wayllccMEFsWPHjv6Xk/bu3RtbtmzxJahjYLh+do/5b4c+cOBA9Pb2Rnl5+YDx8vLy2LNnz6Br2traBp3f1tY2YvucCIZyFv/rxhtvjOnTpx/xDyf5GcpZPPbYY3HvvfdGa2vrKOxw4hjKWezduzd+97vfxRe+8IXYsmVLPPfcc/HlL385Xn/99WhoaBiNbY9LQzmLK664Ig4cOBAf+9jHIsuyOHz4cFx77bVx0003jcaW+X+O9rO7s7Mz/v3vf8eJJ554TPcz5s+4MH6sWbMmNm7cGA8//HCUlJSM9XYmlEOHDsXChQtjw4YNMWXKlLHezoTX19cXU6dOjXvuuSdmz54dCxYsiJUrV8b69evHemsTzrZt22L16tVx9913x86dO+Ohhx6KzZs3x2233TbWW2OIxvwZlylTpkRRUVG0t7cPGG9vb4+KiopB11RUVOQ1n2MzlLN4wx133BFr1qyJ3/72t3HuueeO5DYnhHzP4vnnn48XX3wx5s2b1z/W19cXERGTJk2KZ555Js4444yR3fQ4NZS/F9OmTYsTTjghioqK+sc++MEPRltbW/T09ERxcfGI7nm8GspZ3HLLLbFw4cK46qqrIiLinHPOia6urrjmmmti5cqVUVjov99Hy9F+dpeWlh7zsy0Rx8EzLsXFxTF79uxobm7uH+vr64vm5uaoqakZdE1NTc2A+RERjz766FHnc2yGchYREbfffnvcdtttsXXr1pgzZ85obHXcy/cszjrrrHjyySejtbW1//bpT386LrnkkmhtbY3KysrR3P64MpS/FxdeeGE899xz/fEYEfHss8/GtGnTRMvbMJSzePXVV4+IkzeCMvOr+kbVsP3szu99wyNj48aNWS6Xy+6///7s6aefzq655prs1FNPzdra2rIsy7KFCxdmy5cv75//xz/+MZs0aVJ2xx13ZLt3784aGhp8HHqY5HsWa9asyYqLi7MHH3ww+/vf/95/O3To0Fg9hHEj37P4Xz5VNHzyPYt9+/Zlp5xySvaVr3wle+aZZ7Jf//rX2dSpU7Nvf/vbY/UQxo18z6KhoSE75ZRTsp///OfZ3r17s9/85jfZGWeckX3uc58bq4cwbhw6dCjbtWtXtmvXriwisrvuuivbtWtX9pe//CXLsixbvnx5tnDhwv75b3wc+utf/3q2e/furKmpKd2PQ2dZlv3gBz/ITjvttKy4uDibO3du9qc//an/f7v44ouzxYsXD5j/i1/8IjvzzDOz4uLi7MMf/nC2efPmUd7x+JXPWbznPe/JIuKIW0NDw+hvfBzK9+/F/ydchle+Z/H4449n1dXVWS6Xy04//fTsO9/5Tnb48OFR3vX4lM9ZvP7669k3v/nN7IwzzshKSkqyysrK7Mtf/nL2z3/+c/Q3Ps78/ve/H/Tf/2/8/7948eLs4osvPmLNrFmzsuLi4uz000/PfvzjH+d93YIs81wZAJCGMX+PCwDAsRIuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQjP8DPZCkbwFa2SAAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.pcolormesh(X, Y, exact_occs, cmap='inferno')\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'time $t$')\n",
    "title = r'(a) QSim $\\langle N_j (t) \\rangle$: $N_s = $' + str(N_s)\n",
    "title += r', $J = $' + str(J)\n",
    "title += r', $h = $' + str(h)\n",
    "title += r', $g = $' + str(g)\n",
    "title += r', $\\Delta t=$' + str(dt)\n",
    "plt.title(title)\n",
    "plt.colorbar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x1405a0080>"
      ]
     },
     "execution_count": 340,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cUJRUVG65pprtH79emVmZmr58uVav369ZsyYofPPP19//etfNWzYsCrP83/+5398/w8NDVW/fv30zTff6M477/Stb9GihS655BJ9/fXXVR5vy5Yt2r9/f5myS7+d9+rVS5J0ww03aPbs2Tpz5oyaNm2qbdu2qXv37goNDfXt4/V6lZCQoM2bN1d4PyQpPz9f+/bt8x37hyq6B82aNdPVV1+tt99+W2lpab71xpgqz9PqOVVHUlJStXtbf7/Wp7bs3LlTY8eOVXJyst91qYnSb90VfVt1+hxLnT59Wm63u8z68PBw3+s1Vfq+ePjhh5WQkOBb37RpU0lSWFhYmX3qy/Uoz9SpU9WmTRs99NBDfusvv/xyPf/887be49q8P7XxvpbO1UY0adJEv/jFLyRJMTExuu6667Ro0SI9/vjjvt/3qj6XStWn63Tvvfdq+PDhOnjwoF5//XV5PB6VlJRUa99gZlsiUZHTp08rMzNT8+fP14EDB/z+6OTn55fZvvR1l8tV4TG/nyBU5sSJE3K5XH7Vcv3799ff//53lZSUaNu2bVqyZImeeOIJDR8+XFu3blW3bt0qPWb79u39fo6JiVF4eHiZqr+YmBh9++23lR5LklatWqUWLVqU+eXZtm2bXC6X70PnhhtuUGZmplavXq3Bgwdrx44dGjlypN8+ISEhOnDgQJVl/vAP+g9Vdg8GDx6szMzMKssoj5Vzqo6WLVsqJSXFUkyBysnJ0fXXX6+YmBi98cYbNU6CSpUmEpUld06d4/dFRESUO89IUVGR7/WaKj33n/3sZ37rd+7cKUm65JJLyuxTX67HDxUXF+u9997T3Xff7UuESp08eVJSxclibZxTbd2f2npfezweLVq0SD/5yU/8PiNHjBihpUuXKisrS9dee62kqj+XStWn69SlSxd16dJFkjR69Ghde+21Gjp0qDZs2FDp37BgZ1sicd555+ns2bO+b/+l7rnnHs2fP1/33nuvkpOTFRMTI5fLpZEjR5bbfnXs2DE1a9as0hsZExOjtm3b+t54Ffnkk090wQUXlPuNJiwsTP3791f//v118cUXa8yYMfrb3/6myZMnV3rM8n6hKvolq8439b59++r48ePavXu3Onfu7Bd7p06dfDUKP/rRjxQbG6u3335bbdu2VVFRUaV9CSq6H6XHlirui1DZPdi4caP69etX5XmV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0Ys8zt/w2PDTToegLwuinA5Bx4v3Oh2CPj7Sz+kQJElHiz5wOgTlFfd1OgR1jXF+uPqeQrfTIajI43QEksfhHoR1WX5jSSSY2RIAAFjWYGokAACoT3hoFwAAsIymjSqsWbNGt956q5KTk3XgwAFJ0oIFC7R27dpaCw4AANRvlhKJN998U6mpqYqIiNCWLVtUXFwsScrPz9fUqVNrNUAAAIIRz9qoxCOPPKI5c+boueee8xsKOmjQIG3evLnWggMAIFgZuQJegoGlRGLXrl264ooryqyPiYnR8ePHA40JAAAECUuJRHx8vHbv3l1m/dq1a9WpU6eAgwIAINgF9sCuwDpq1iVLicRdd92lcePGacOGDXK5XDp48KAWLlyo8ePH6+67767tGAEACDqNpY+EpeGf999/v7xer66++mqdOnVKV1xxhdxut8aPH6977rmntmMEACDoNJbhn5YSCZfLpQcffFD33Xefdu/erZMnT6pbt26KjIys7fgAAEA9ZnlCqqKiIn3yySfKy8uT1+tVTk6O77Vhw4bVSnAAAAQrrwKc2TJIRm1YSiSWLVum2267Td9++22Z11wulzyeevBkGAAAHNRYmjYsdba85557dMstt+jQoUPyer1+C0kEAACNh6UaidzcXGVkZCguLq624wEAoEHwyhVQ80SwNG1YqpEYPny4Vq5cWSsBZGZmqn///oqKilLr1q110003adeuXbVybAAAHBPoHBJB0rRhqUbimWee0c0336w1a9aoZ8+eftNkS9Lvfve7ah9r1apVGjt2rPr376+zZ8/qgQce0LXXXqvPPvtMzZs3txIeAACoI5YSiddee03/+te/FB4erpUrV8rl+m/W5HK5apRILFu2zO/nF198Ua1bt1Z2dna503ADABAMAp1UqkFPSPXggw/qoYce0v3336+QEMtPIi9Xfn6+JKlVq1blvl5cXOx72qgkFRQU1Gr5AADUBkZtVKKkpEQjRoyo9STC6/Xq3nvv1aBBg9SjR49yt8nMzFRMTIxvSUhIqNUYAABA9VnKBNLS0rR48eLajkVjx47Vp59+qkWLFlW4zcSJE5Wfn+9b9u/fX+txAAAQKG8tLMHAUtOGx+PRjBkztHz5cvXq1atMZ8uZM2fW+Jjp6el65513tHr1al1wwQUVbud2u+V2u2t8fAAA6lJjadqwlEhs375dl156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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.pcolormesh(X, Y, np.abs(exact_occs - qc_occ_nums), cmap='inferno')\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'time $t$')\n",
    "title = r'(a) QSim $\\langle N_j (t) \\rangle$: $N_s = $' + str(N_s)\n",
    "title += r', $J = $' + str(J)\n",
    "title += r', $h = $' + str(h)\n",
    "title += r', $g = $' + str(g)\n",
    "title += r', $\\Delta t=$' + str(dt)\n",
    "plt.title(title)\n",
    "plt.colorbar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 341,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.13212111247685732"
      ]
     },
     "execution_count": 341,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(np.abs(exact_occs - qc_occ_nums))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "# for i in range(N_t):\n",
    "#     plt.bar(range(N_s), qc_occ_nums[i], label='Exact Trotter', color='gray')\n",
    "#     plt.xlabel('s (site)')\n",
    "#     plt.ylabel(r'$\\langle n_s \\rangle$')\n",
    "#     plt.legend()\n",
    "#     plt.ylim(0,1.3)\n",
    "#     title = r'$N_s =$' + str(N_s)\n",
    "#     title += r', $\\lambda$ = ' + str(lam)\n",
    "#     title += r', $t = $' + str(round(i * dt, 4))\n",
    "#     plt.title(title)\n",
    "#     folder = 'qc-scattering-plots/'\n",
    "#     filename = folder\n",
    "#     filename += 'scatt-timestep' + str(i) + '.png'\n",
    "#     plt.savefig(filename)\n",
    "#     plt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exact Diagonalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "CDAG = []\n",
    "for s in range(N_s):\n",
    "    cdag = Sm[s]\n",
    "    for j in range(s):\n",
    "        cdag = -Z[j] @ cdag\n",
    "    CDAG.append(cdag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = np.array([-1, 0, 1, 2, 3, 4, -3, -2])\n",
    "l = np.roll(r, 4)\n",
    "def GWP_coeff(x, x_mean, x_dif, nk_mean, sig_k):\n",
    "    k = nk_mean * np.pi / N_s\n",
    "    coeff = 1 / np.sqrt(N_s) * np.exp(-1j * k * (x + x_mean))\n",
    "    coeff *= np.exp(-x_dif[x]**2 / sig_k**2)\n",
    "    return coeff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "xr_mean = 1\n",
    "xl_mean = 5\n",
    "nk_mean = 3\n",
    "sig_k = 3/2\n",
    "rm_op = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "lm_op = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "for j in range(N_s):\n",
    "    rm_op += GWP_coeff(j, 1, r, nk_mean, sig_k) * CDAG[j]\n",
    "    lm_op += GWP_coeff(j, 5, l, -nk_mean, sig_k) * CDAG[j]\n",
    "\n",
    "exact_init_state = np.zeros((2**N_s), dtype=complex)\n",
    "exact_init_state[0] = 1\n",
    "exact_init_state = lm_op @ rm_op @ ground_state\n",
    "exact_init_state /= np.linalg.norm(exact_init_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "state = np.array(exact_init_state)\n",
    "occs = []\n",
    "for t in range(N_t):\n",
    "    occ = []\n",
    "    for j in range(N_s):\n",
    "        occ_j = np.inner(state.conjugate(), N[j] @ state)\n",
    "        occ.append(occ_j)\n",
    "    occs.append(np.real(occ))\n",
    "    state = TEO @ state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Initial State: $N_s = $8, $n_k = \\\\pm$3, $\\\\sigma_k=$1.5')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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unWVlZWlf/3rX/rhhx80ZcoUp1GLq712khQaGqp+/frpk08+0bBhw9SlSxd9/fXXev/99zVixIhCi1OW9+v3xhtv6NSpUzpy5IgkaenSpfrpp58k/fY9HBISIknasGGDbr31VqWkpGjcuHGSpMGDBysoKEidO3dWrVq1tGPHDs2cOVPBwcGaPHnyNdcGN/LMzWHA/xR3W/qxY8eK7Pf7202Lu1184sSJRt26dQ0fHx/H40X1PXnypJGYmGjUrFnTqFy5shEfH2/88MMPRmRkpJGQkHDV57nc559/bjzwwANG06ZNjcqVKxv+/v5Gw4YNjUcffdTIzs6+ao2lqelKxzAMw8jOzjZGjRpl1K9f3/Dz8zMiIiKM2267zZg5c6bTMVSC29JffPFFQ5Kxd+/eQo/deuuthiTj9ttvd2pfvny50aVLFyM8PNx46qmnjIKCgis+x7Vav3690bt3byMiIsLw8/MzGjdubDz//POFnvfMmTOGJGPIkCHFHuuDDz4wJBnbt293at+wYYMhyVi2bJmjraCgwPD39zfCwsKclg0oL664Vfv999834uLijPDwcMPX19eoXr26ERcXZ3z66adO/Ury2l1y8uRJ4/777zeqV69uBAQEGG3atDHeeeedQv088fpFRkaW6DW69NqmpKQ42l599VWjY8eORo0aNQxfX1+jdu3axr333mvs2bOnXGpH2VkMw4UzQAHgMj/++KO6deumWbNmqVevXp4uR8uXL1efPn0cq0Zfqx07dqhnz5764IMPNGjQIKWnp7v189o8ydWvnXR9vX7wLC42AnC5RYsW6cCBA5J+W0YgPz/fcbuzp33xxRcaMmSIy35hb9++XdHR0erSpYuefvpp3XPPPTp//rxLju1tXP3aSdfX6wfPYoQHgMs99thj+uCDD3T27FnddNNNmjRpku68805Pl+UWY8eO1fnz5/Xiiy9KkmN+z7x58zxZVoXB64fyQuABAACmxyUtAABgegQeAABgegQeAABgeiw8+F92u11HjhxRlSpVSvXRBAAAwHMMw9CZM2dUp06dK650TeD5ryNHjqh+/fqeLgMAAJTB4cOHC32A8O8ReP6rSpUqkn57wfikWwAAKobc3FzVr1/f8Xu8OASe/7p0Gatq1aoEHgAAKpirTUdh0jIAADA9Ag8AADA9Ag8AADA95vAAAEzHZrOpoKDA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6eDBg+rbt6+jzW63S5J8fX21a9cu3XTTTYX2CwgIUEBAgIurBwAA3sjrRnj8/f3Vrl07paWlOdrsdrvS0tIUGxtbqH/Tpk21bds2ZWZmOra77rpLt956qzIzM7lUBQAAvG+ER5KSk5OVkJCg9u3bq2PHjpo2bZry8vKUmJgoSRo+fLjq1q2r1NRUBQYGqmXLlk77V6tWTZIKtQMAgOuTVwaewYMH69ixYxo7dqyysrLUunVrrVixwjGR+dChQ/Lx8brBKQAA4KW8MvBIUlJSkpKSkop8bO3atVfcd+7cua4vCAAAVFgMkwAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANMj8AAAANPz2sAzffp0RUVFKTAwUJ06ddKGDRuK7fvxxx+rffv2qlatmipVqqTWrVvr3XffLcdqAQCAN/PKwLNw4UIlJycrJSVFGRkZiomJUXx8vHJycorsX6NGDT3zzDNKT0/X1q1blZiYqMTERK1cubKcKwcAAN7IKwPP1KlTNXLkSCUmJqp58+aaMWOGgoODNXv27CL79+jRQ/3791ezZs1000036fHHH1erVq309ddfl3PlAADAG3ld4MnPz9emTZsUFxfnaPPx8VFcXJzS09Ovur9hGEpLS9OuXbvUrVu3YvtduHBBubm5ThsAADAnrws8x48fl81mU3h4uFN7eHi4srKyit3v9OnTqly5svz9/XXnnXfq9ddfV8+ePYvtn5qaqpCQEMdWv359l50DAADwLl4XeMqqSpUqyszM1MaNG/X8888rOTlZa9euLbb/mDFjdPr0acd2+PDh8isWAACUK19PF3C5mjVrymq1Kjs726k9OztbERERxe7n4+Ojhg0bSpJat26tnTt3KjU1VT169Ciyf0BAgAICAlxWNwAA8F7XPMJz4sQJ2e12V9QiSfL391e7du2UlpbmaLPb7UpLS1NsbGyJj2O323XhwgWX1QUAACquMo3w7NixQ0uWLNGSJUu0fv16Va9eXXfccYfuvvtu3X777apUqdI1FZWcnKyEhAS1b99eHTt21LRp05SXl6fExERJ0vDhw1W3bl2lpqZK+m0+Tvv27XXTTTfpwoULWr58ud599129+eab11QHAAAwhxIHnl27dmnmzJlasmSJsrOz1bNnTz388MNasmSJ9u/fr6VLl2rChAm699571aNHD911113685//XKaiBg8erGPHjmns2LHKyspS69attWLFCsdE5kOHDsnH53+DU3l5eXrkkUf0008/KSgoSE2bNtV7772nwYMHl+n5AQCAuVgMwzBK0nHOnDlav3697r77bt12223y9/cvst/Bgwf16aefatmyZVq9erVLi3Wn3NxchYSE6PTp06pataqny6mQxo8f7+kSyiQlJcXTJQBuxfcmzKykv79LPMJzafXiq4mKitLjjz+uxx9/vKSHBgAAcKtrmrR8aQ5NRkYGE4QBAIDXuqbb0i/d8j158mR9//338vHxUYsWLdSqVSu1atVKHTp0KLSAIAAAQHm7psBz6TbxDz74QJL066+/avv27dq6datWr16tlJQU3XHHHZo4ceK1VwoAAFBGpQo8devWVbt27dSuXTu1bdtWbdu2Vd26dR2PBwUFqUOHDurQoYOjrV27dgQeAADgUaUKPP/3f/+njIwMffzxx3r++edls9kUFhamtm3bOoWgyMhIxz7ffvuty4sGAAAojVIFnkcffdTx7wsXLigzM1MZGRnKyMjQ8uXL9fLLL6ugoEAXL1509PPz83NdtQAAAGVQ5jk8AQEB6tSpk9q2bauVK1eqoKBABw4cKHZ9HgAAKqqLNrt8rab5vO3rUpnevfPnz2vx4sUaNmyYwsLClJiYKKvVqnfffVfHjh1zdY0AAHjMt/t/UZuJq7V+/y+eLgXXoFQjPAsXLtSiRYv0+eefq0qVKurfv78WLVqkHj16yGq1uqtGAAA8osBm15iPt+nM+Ysas3ibVo7uJj9GeiqkUgWeoUOHqk6dOnrppZc0YsQI+fpe013tAAB4tXnrDurA8TxJ0v5jeZq37qBGdG3g4apQFqWKqV27dtWZM2f0yCOPKCQkRLGxsRo1apRmz56tzMxMp8nKAABUZNm55/Xyql1ObVNW7VZ27nkPVYRrUaohmi+//FKStGfPHm3atMlxh9b777+vU6dOKSAgQNHR0dqwYYNbigUAoLz8fdkOFdicP18732bX85/t1GtD23ioKpRVma5JNWrUSI0aNdKQIUMcbQcOHNB3332nzZs3u6w4AAA8Yd2+41q69Wihdpvd0JItRzS04w2KvSnUA5WhrEp8SSsrK+uKHxB64403atCgQZo0aZIkaf/+/ddeHQAAHvBxxs/ysRT9mI9FWpTxU/kWhGtW4sDz0UcfqUaNGurfv7/mzJlT5O3n69ev19NPP60WLVooJibGpYUCAFBeBrStJ7tR9GN2QxrYrl75FoRrVuLAk5SUpC1btqhr166aO3eu6tWrp1tuuUWTJk3SyJEjVbt2bfXr1085OTmaPHky6/EAACqs2JtC1bdVbVkvG+ax+lh0V0wd3dyAy1kVTanm8DRs2FDJyclKTk7WL7/8omXLlmn58uWKiorSokWLFBsbK4ulmDFAALiOsDJvxfdsn+ZavTNbtt8N9fhbffTMnc08WBXKqswL6YSGhiohIUEJCQmurAcAKrxv9/+ikf/8Tm8Pb69OjARUWOFVA/Vkryb6+2c7HW1/6dVY4VUDPVgVyoo/PwDAhS5fmbfAZvd0SbgGCZ2j1CCskiSpQVglJXSO8mxBKDMCD+BFLvLLscIramVeVFx+Vh9N6h+tKoG+Su0fzcdKVGC8c4CX4AMKKz5W5jWnmxuEavNzPbk8WcEReCo4RgTMgcsg5nCllXlRsTEBveLjHazAGBEwDy6DVHyXVua1XbZ4y6WVedP38X0KeBKBp4JiRMA8uAxiDqzMC3g3Ak8FxYiAeXAZxBxYmRfwbgSeCogRAfPgMoh5sDIv4N0IPBUQIwLmwWUQc3m2T3P5WZ3fUFbmBbwDgaeCYUTAXLgMYi6XVub9PVbmBbwDgaeCYUTAXLgMYj6szAt4JwJPBcOIgPlwGcRcWJkX8E58J1YwjAiYD5dBzIeVeQHvQ+CpgBgRMB8ug5gPK/MC3oXvyAqIEQHz4TIIALgXP1UrKEYEzIfLIADgPgSeCooRAXPiMggAuIevpwtA2V0aEeCXJAAAV8ZvygqOsAMAwNXx2xIAAJgegQcAAJgegQcAAJgegQcAAJgegQcAAJget6WXg/Hjx3u6hDJJSUnxdAleiffTPCrqeynxfhalor6fvJflgxEeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgegQeAABgel4beKZPn66oqCgFBgaqU6dO2rBhQ7F9Z82apa5du6p69eqqXr264uLirtgfAABcX7wy8CxcuFDJyclKSUlRRkaGYmJiFB8fr5ycnCL7r127VkOHDtUXX3yh9PR01a9fX7169dLPP/9czpUDAABv5JWBZ+rUqRo5cqQSExPVvHlzzZgxQ8HBwZo9e3aR/f/1r3/pkUceUevWrdW0aVO9/fbbstvtSktLK+fKAQCAN/K6wJOfn69NmzYpLi7O0ebj46O4uDilp6eX6Bjnzp1TQUGBatSoUWyfCxcuKDc312kDAADm5HWB5/jx47LZbAoPD3dqDw8PV1ZWVomO8be//U116tRxCk2XS01NVUhIiGOrX7/+NdUNAAC8l9cFnms1efJkLViwQIsXL1ZgYGCx/caMGaPTp087tsOHD5djlQAAoDz5erqAy9WsWVNWq1XZ2dlO7dnZ2YqIiLjivi+//LImT56sNWvWqFWrVlfsGxAQoICAgGuuFwAAeD+vG+Hx9/dXu3btnCYcX5qAHBsbW+x+L774oiZOnKgVK1aoffv25VEqAACoILxuhEeSkpOTlZCQoPbt26tjx46aNm2a8vLylJiYKEkaPny46tatq9TUVEnSCy+8oLFjx2r+/PmKiopyzPWpXLmyKleu7LHzAAAA3sErA8/gwYN17NgxjR07VllZWWrdurVWrFjhmMh86NAh+fj8b3DqzTffVH5+vgYOHOh0nJSUFI0bN648SwcAAF7IKwOPJCUlJSkpKanIx9auXev09cGDB91fEAAAqLC8bg4PAACAqxF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACA6RF4AACAJOmize7pEtyG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FLfgklYFlZycrISEBLVv314dO3bUtGnTlJeXp8TERE+X5jJnz551+ovxwIEDyszMVI0aNXTDDTd4sDLXGTVqlObPn69PP/1UVapUcczBCgkJUVBQkIerc50xY8aod+/euuGGG3TmzBnNnz9fa9eu1cqVKz1dmktVqVKl0PyrSpUqKTQ01FTzsp588kn17dtXkZGROnLkiFJSUmS1WjV06FBPl+ZSTzzxhDp37qxJkybpj3/8ozZs2KCZM2dq5syZni7N5ex2u+bMmaOEhAT5+po0Gnj6NjGU3euvv27ccMMNhr+/v9GxY0fj22+/9XRJLvXFF18YkgptCQkJni7NZYo6P0nGnDlzPF2aSz3wwANGZGSk4e/vb4SFhRm33XabsWrVKk+XVS7MeFv64MGDjdq1axv+/v5G3bp1jcGDBxt79+71dFlusXTpUqNly5ZGQECA0bRpU2PmzJmeLsktVq5caUgydu3a5elS3MZiGIbhmagFAABQPpjDAwAATI/AAwAATI/AAwAATI/AAwAATI/AAwAATI/AAwAATI/AAwAATI/AAwAATI/AAwAATI/AA6DC69Gjh0aPHu2WYz/11FPq27evW44NoPzw0RIAKrwTJ07Iz89PVapUkfRbAGrdurWmTZt2zcc+deqUrFar49gAKiaTfiQqgOtJjRo13HbsatWque3YAMoPl7QAVAgfffSRoqOjFRQUpNDQUMXFxSkvL0+S8yWt+++/X19++aVeffVVWSwWWSwWHTx4UHa7XampqbrxxhsVFBSkmJgYffTRR1d8zuPHj8tisWj79u3uPj0AbsYIDwCvd/ToUQ0dOlQvvvii+vfvrzNnzug///mPiroi/+qrr2r37t1q2bKlJkyYIEkKCwtTamqq3nvvPc2YMUONGjXSV199pXvvvVdhYWHq3r17kc+7ZcsWBQQEqGnTpm49PwDuR+AB4PWOHj2qixcv6p577lFkZKQkKTo6usi+ISEh8vf3V3BwsCIiIiRJFy5c0KRJk7RmzRrFxsZKkho0aKCvv/5ab7311hUDT4sWLeTry49KoKLjuxiA14uJidFtt92m6OhoxcfHq1evXho4cKCqV69eov337t2rc+fOqWfPnk7t+fn5atOmTbH7ZWZmqnXr1tdSOgAvQeAB4PWsVqtWr16tdevWadWqVXr99df1zDPPaP369brxxhuvuv/Zs2clSZ999pnq1q3r9FhAQECx+23ZskUPPvjgtRUPwCswaRlAhWCxWNSlSxeNHz9emzdvlr+/vxYvXlxkX39/f9lsNsfXzZs3V0BAgA4dOqSGDRs6bfXr1y/yGPn5+dq5c6diYmLccj4AyhcjPAC83vr165WWlqZevXqpVq1aWr9+vY4dO6ZmzZoV2T8qKkrr16/XwYMHVblyZdWoUUNPPvmknnjiCdntdt1yyy06ffq0vvnmG1WtWlUJCQmFjrFz504VFBQQeACTIPAA8HpVq1bVV199pWnTpik3N1eRkZGaMmWKevfuXWT/J598UgkJCWrevLl+/fVXHThwQBMnTnTcrbV//35Vq1ZNbdu21dNPP13kMTIzMxUZGck6PIBJsNIyABQhKSlJOTk5+uCDDzxdCgAXYA4PAPzO+fPntWnTJi1atEjx8fGeLgeAixB4AOB3pk2bpri4ON19990aPny4p8sB4CJc0gIAAKbHCA8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADA9Ag8AADC9/w/0WM3YuWYvFgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(range(N_s), occs[0], color='grey', label='Exact')\n",
    "plt.scatter(range(N_s), qc_occ_nums[0], marker='d', label='Noisy Sim')\n",
    "plt.legend()\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'$\\langle N_j \\rangle$')\n",
    "title = r'Initial State: '\n",
    "title += r'$N_s = $' + str(N_s)\n",
    "title += r', $n_k = \\pm$' + str(nk_mean)\n",
    "title += r', $\\sigma_k=$' + str(sig_k)\n",
    "plt.title(title)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "62.4885013720652"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "perc_errors = []\n",
    "for i in range(N_s):\n",
    "    err = np.abs(1 - qc_occ_nums[0][i]/occs[0][i]) * 100\n",
    "    perc_errors.append(err)\n",
    "np.mean(perc_errors)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[9.778957002719956,\n",
       " 1.4904049097782868,\n",
       " 10.714051297525874,\n",
       " 171.16742768104146,\n",
       " 13.196504008736753,\n",
       " 3.4177564078247014,\n",
       " 20.020465945832267,\n",
       " 270.12244372306225]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "perc_errors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x7cae3eb48b90>"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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srOzLR/71KlTCg4Odh0bAKrDI9aAANWiRQu/HbtZs2Z+OzaA+oWuDaAOe++999SrVy9FRESoZcuWSklJUUlJiST3ro37779fa9as0axZs+RwOORwOHTw4EE5nU5lZWWpQ4cOioiIUGJiot57770az3nixAk5HA7t3LnT35cHoB6gRQKoo44dO6Z7771XL7zwgn7yk5/o9OnT+uyzz1RVb+SsWbO0d+9e9ezZU1OnTpUktWrVSllZWXrzzTc1d+5cXXPNNfr000913333qVWrVho8eHCV5/38888VFhamrl27+vX6ANQPJBJAHXXs2DFdvHhRP/3pT9W+fXtJUq9evarcNioqSqGhoWrcuLFiY2MlSaWlpZo+fbpWrlyp5ORkSVLHjh21du1avfLKKzUmEj169FBICL8eAFwZvymAOioxMVFDhgxRr169lJqaqttvv10jRoxQ8+bNPdp///79Onv2rG677Ta3+rKyMvXt27fa/XJzc9WnTx8roQNoQEgkgDoqODhYH3/8sdatW6ePPvpIf/jDH/T0009r48aN6tChwxX3P3PmjCTp73//u9q2bev2XlhYWLX7ff7553rwwQetBQ+gwWCwJVCHORwODRo0SM8++6y2b9+u0NBQLVmypMptQ0NDVV5e7nrdvXt3hYWF6fDhw+rcubNbiY+Pr/IYZWVl+te//qXExES/XA+A+ocWCaCO2rhxo3JycnT77berdevW2rhxo44fP65u3bpVuX1CQoI2btyogwcPqkmTJmrRooUmTJigX/7yl3I6nfrRj36koqIi/fOf/1RkZKTS0tIqHeNf//qXLly4QCIBwGMkEkAdFRkZqU8//VTZ2dkqLi5W+/bt9dJLL2no0KFVbj9hwgSlpaWpe/fuOnfunA4cOKBp06a5Zm98/fXXatasma677jr9z//8T5XHyM3NVfv27VlHAoDHWNkSgEtGRoYKCwv17rvv2h0KgADBGAkAOn/+vLZu3aq//OUvSk1NtTscAAGERAKAsrOzlZKSorvuuktjx461OxwAAYSuDQAAYBotEgAAwDQSCQAAYBqJBAAAMI1EAgAAmEYiAQAATCORAAAAppFIAAAA00gkAACAaSQSAADANBIJAABgGokEAAAw7f8D+kDxFM59e7gAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, N_s-1, N_s)\n",
    "y = np.linspace(0, (N_t - 1) * dt, N_t)\n",
    "X, Y = np.meshgrid(x, y)\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "plt.pcolormesh(X, Y, occs, cmap='inferno')\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'time $t$')\n",
    "title = r'(a) ED $\\langle N_j (t) \\rangle$: $N_s = $' + str(N_s)\n",
    "title += r', $J = $' + str(J)\n",
    "# title += r', $h = $' + str(h)\n",
    "title += r', $g = $' + str(g)\n",
    "plt.title(title)\n",
    "plt.colorbar()\n",
    "# plt.savefig('qc-occ-nums.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x7cae3fc00910>"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, N_s-1, N_s)\n",
    "y = np.linspace(0, (N_t - 1) * dt, N_t)\n",
    "X, Y = np.meshgrid(x, y)\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "perc_errors = []\n",
    "for t in range(N_t):\n",
    "    perc_error_t = []\n",
    "    for j in range(N_s):\n",
    "        perc_error = np.abs((qc_occ_nums[t][j] - occs[t][j]))\n",
    "        perc_error_t.append(perc_error)\n",
    "    perc_errors.append(perc_error_t)\n",
    "\n",
    "plt.pcolormesh(X, Y, perc_errors, cmap='inferno')\n",
    "plt.xlabel(r'site $j$')\n",
    "plt.ylabel(r'time $t$')\n",
    "title = r'(c) Absolute Difference: $N_s = $' + str(N_s)\n",
    "title += r', $J = $' + str(J)\n",
    "# title += r', $h = $' + str(h)\n",
    "title += r', $g = $' + str(g)\n",
    "title += r', $\\Delta t=$' + str(dt)\n",
    "plt.title(title)\n",
    "plt.colorbar()\n",
    "# plt.savefig('qc-occ-nums.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.016967739496864472)"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(perc_errors)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "nks = np.arange(-N_s + 1, N_s + 1, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "ETADAG8 = []\n",
    "for i in range(N_s):\n",
    "    eta = np.zeros((2**N_s, 2**N_s), dtype=complex)\n",
    "    for j in range(N_s):\n",
    "        arg = 1 / np.sqrt(N_s) * np.exp(-1j * nks[i] * np.pi / N_s * j)\n",
    "        eta += arg * CDAG[j]\n",
    "    eta /= np.linalg.norm(eta)\n",
    "    ETADAG8.append(eta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "ETADAG12 = []\n",
    "for i in range(N_s):\n",
    "    eta = ETADAG8[i]\n",
    "    eta = np.kron(np.identity(2**4, dtype=complex), eta)\n",
    "    eta /= np.linalg.norm(eta)\n",
    "    ETADAG12.append(eta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.quantum_info import Statevector\n",
    "qreg = QuantumRegister(N_s+4)\n",
    "circ = QuantumCircuit(qreg)\n",
    "\n",
    "# State-Prep\n",
    "## Ground state preparation\n",
    "circ.prepare_state(ground_state, range(N_s)) # Exact\n",
    "ground_state12 = Statevector.from_instruction(circ).reverse_qargs().data\n",
    "\n",
    "circ.x(N_s) # Prepare control\n",
    "circ.x(N_s+2) # Prepare control\n",
    "\n",
    "## Right moving wave packet\n",
    "### V^dag\n",
    "for i in range(N_s//2):\n",
    "    circ.rz(betas_r[i], i)\n",
    "for i in range(N_s//2-1):\n",
    "    j = N_s//2 - 1 - i\n",
    "    circ.append(givens_circ(angles_r[i]), [j-1, j])\n",
    "###\n",
    "circ.ccx(N_s, 0, N_s+1) # Remove |1> part of system qubit\n",
    "circ.x(0) # Excite system qubit\n",
    "### V\n",
    "for i in range(N_s//2-1):\n",
    "    j = N_s//2 - 2 - i\n",
    "    circ.append(givens_circ(-angles_r[j]), [i, i+1])\n",
    "for i in range(N_s//2):\n",
    "    circ.rz(-betas_r[i], i)\n",
    "\n",
    "# # Left Moving Wave Packet\n",
    "# # V^dag\n",
    "for i in range(N_s//2):\n",
    "    circ.rz(betas_l[i], i+N_s//2)\n",
    "for i in range(N_s//2-1):\n",
    "    j = N_s - 1 - i\n",
    "    circ.append(givens_circ(angles_l[i]), [j-1, j])\n",
    "###\n",
    "circ.ccx(N_s+2, N_s//2, N_s+3) # Remove |1> part of system qubit\n",
    "for i in range(N_s//2): # Obey anticommutation relations\n",
    "    circ.z(i)\n",
    "circ.x(N_s//2) # Excite system qubit\n",
    "### V\n",
    "for i in range(N_s//2-1):\n",
    "    j = N_s//2 - 2 - i\n",
    "    circ.append(givens_circ(-angles_l[j]), [i+N_s//2, i+N_s//2+1])\n",
    "for i in range(N_s//2):\n",
    "    circ.rz(-betas_l[i], i+N_s//2)\n",
    "\n",
    "state = Statevector.from_instruction(circ).reverse_qargs().data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "ground_state_12 = ground_state12.reshape((2**12))\n",
    "state = state.reshape((2**12))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "four_spec_8 = []\n",
    "four_spec_12 = []\n",
    "for i in range(N_s-1):\n",
    "    for j in range(i+1, N_s):\n",
    "        k_state8 = ETADAG8[i] @ ETADAG8[j] @ ground_state\n",
    "        k_state8 /= np.linalg.norm(k_state8)\n",
    "        # k_state12 = ETADAG12[i] @ ETADAG12[j] @ ground_state_12\n",
    "        # k_state12 /= np.linalg.norm(k_state12)\n",
    "        \n",
    "        amp8 = np.inner(k_state8.conj(), exact_init_state)\n",
    "        # amp12 = np.inner(k_state12.conj(), state)\n",
    "\n",
    "        four_spec_8.append(amp8 * amp8.conj())\n",
    "        # four_spec_12.append(amp12 * amp12.conj())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_spec_12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/matplotlib/cbook.py:1762: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  return math.isfinite(val)\n",
      "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/matplotlib/transforms.py:767: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  points = np.asarray(points, float)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 0 artists>"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAo5klEQVR4nO3df1DU953H8RegLBqFRDlZQeJqtCpVQUEoJhdyk51Aa5uQeIR4XqXUIZOeJJq9oxFP4Xr2ujZRBxuZcHbGtJ0LlXOuWpt45LyNmOuJ4YQwOWPOpF5SOMku2F6gYgMO+70/cllnK6CLP/YDPh8z3wl89v357vv7zTf6yofvd4mwLMsSAACAwSLD3QAAAMDVEFgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYbF+4GbhS/36+Ojg5NnjxZERER4W4HAABcA8uy9Lvf/U6JiYmKjBx6HWXMBJaOjg4lJyeHuw0AADAC7e3tmjFjxpCvj5nAMnnyZEmfHXBsbGyYuwEAANeip6dHycnJgb/HhzJmAsvnPwaKjY0lsAAAMMpc7XYObroFAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMN64cDcAALeKY+NrIc/5aNuKm9AJgFCxwgIAAIw3osBSXV0th8OhmJgYZWVlqampacjad999VytXrpTD4VBERISqqqoGrTt37pz+/M//XFOnTtWECRO0aNEinTx5ciTtAQCAMSbkwFJXVyeXy6XKykq1tLQoNTVVubm56uzsHLT+4sWLmj17trZt2ya73T5ozf/+7//q3nvv1fjx4/XP//zPOn36tHbs2KG77ror1PYAAMAYFPI9LDt37lRJSYmKi4slSTU1NXrttde0d+9ebdy48Yr6ZcuWadmyZZI06OuS9P3vf1/Jycl6+eWXA2OzZs0KtTUAADBGhbTC0t/fr+bmZjmdzss7iIyU0+lUY2PjiJs4dOiQMjIyVFBQoGnTpmnJkiX64Q9/OOycvr4+9fT0BG0AAGBsCimwnD9/XgMDA0pISAgaT0hIkNfrHXET//3f/62XXnpJc+fO1euvv65vfetbeuaZZ/TjH/94yDlut1txcXGBLTk5ecTvDwAAzGbEU0J+v19Lly7V9773PS1ZskRPPvmkSkpKVFNTM+Sc8vJydXd3B7b29vZb2DEAALiVQgos8fHxioqKks/nCxr3+XxD3lB7LaZPn66UlJSgsQULFqitrW3IOTabTbGxsUEbAAAYm0IKLNHR0UpPT5fH4wmM+f1+eTweZWdnj7iJe++9V2fOnAkae//99zVz5swR7xMAAIwdIT8l5HK5VFRUpIyMDGVmZqqqqkq9vb2Bp4bWrFmjpKQkud1uSZ/dqHv69OnA1+fOnVNra6smTZqkOXPmSJKeffZZLV++XN/73vf0+OOPq6mpSXv27NGePXtu1HECAIBRLOTAUlhYqK6uLlVUVMjr9SotLU319fWBG3Hb2toUGXl54aajo0NLliwJfL99+3Zt375dOTk5amhokPTZo88HDhxQeXm5/vZv/1azZs1SVVWVVq9efZ2HBwAAxoIIy7KscDdxI/T09CguLk7d3d3czwJgUPwuIcA81/r3txFPCQEAAAyHwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMN6IAkt1dbUcDodiYmKUlZWlpqamIWvfffddrVy5Ug6HQxEREaqqqhp239u2bVNERIQ2bNgwktYAAMAYFHJgqaurk8vlUmVlpVpaWpSamqrc3Fx1dnYOWn/x4kXNnj1b27Ztk91uH3bf//Ef/6G///u/1+LFi0NtCwAAjGEhB5adO3eqpKRExcXFSklJUU1NjSZOnKi9e/cOWr9s2TK98MILeuKJJ2Sz2Ybc74ULF7R69Wr98Ic/1F133RVqWwAAYAwLKbD09/erublZTqfz8g4iI+V0OtXY2Hhdjaxbt04rVqwI2vdw+vr61NPTE7QBAICxKaTAcv78eQ0MDCghISFoPCEhQV6vd8RN7Nu3Ty0tLXK73dc8x+12Ky4uLrAlJyeP+P0BAIDZwv6UUHt7u9avX69XXnlFMTEx1zyvvLxc3d3dga29vf0mdgkAAMJpXCjF8fHxioqKks/nCxr3+XxXvaF2KM3Nzers7NTSpUsDYwMDA3rzzTe1e/du9fX1KSoq6op5Nptt2HtiAADA2BHSCkt0dLTS09Pl8XgCY36/Xx6PR9nZ2SNq4MEHH9R//ud/qrW1NbBlZGRo9erVam1tHTSsAACA20tIKyyS5HK5VFRUpIyMDGVmZqqqqkq9vb0qLi6WJK1Zs0ZJSUmB+1H6+/t1+vTpwNfnzp1Ta2urJk2apDlz5mjy5MlauHBh0Hvccccdmjp16hXjAADg9hRyYCksLFRXV5cqKirk9XqVlpam+vr6wI24bW1tioy8vHDT0dGhJUuWBL7fvn27tm/frpycHDU0NFz/EQAAgDEvwrIsK9xN3Ag9PT2Ki4tTd3e3YmNjw90OAAM5Nr4W8pyPtq24CZ0A+Ny1/v0d9qeEAAAArobAAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYb0SBpbq6Wg6HQzExMcrKylJTU9OQte+++65Wrlwph8OhiIgIVVVVXVHjdru1bNkyTZ48WdOmTVN+fr7OnDkzktYAAMAYFHJgqaurk8vlUmVlpVpaWpSamqrc3Fx1dnYOWn/x4kXNnj1b27Ztk91uH7Tm2LFjWrdunU6cOKEjR47o0qVLeuihh9Tb2xtqewAAYAyKsCzLCmVCVlaWli1bpt27d0uS/H6/kpOT9fTTT2vjxo3DznU4HNqwYYM2bNgwbF1XV5emTZumY8eO6f7777+mvnp6ehQXF6fu7m7FxsZe0xwAtxfHxtdCnvPRthU3oRMAn7vWv79DWmHp7+9Xc3OznE7n5R1ERsrpdKqxsXHk3f6B7u5uSdKUKVOGrOnr61NPT0/QBgAAxqaQAsv58+c1MDCghISEoPGEhAR5vd4b0pDf79eGDRt07733auHChUPWud1uxcXFBbbk5OQb8v4AAMA8xj0ltG7dOp06dUr79u0btq68vFzd3d2Brb29/RZ1CAAAbrVxoRTHx8crKipKPp8vaNzn8w15Q20oSktL9eqrr+rNN9/UjBkzhq212Wyy2WzX/Z4AAMB8Ia2wREdHKz09XR6PJzDm9/vl8XiUnZ094iYsy1JpaakOHDigN954Q7NmzRrxvgAAwNgT0gqLJLlcLhUVFSkjI0OZmZmqqqpSb2+viouLJUlr1qxRUlKS3G63pM9u1D19+nTg63Pnzqm1tVWTJk3SnDlzJH32Y6Da2lr9/Oc/1+TJkwP3w8TFxWnChAk35EABAMDoFXJgKSwsVFdXlyoqKuT1epWWlqb6+vrAjbhtbW2KjLy8cNPR0aElS5YEvt++fbu2b9+unJwcNTQ0SJJeeuklSdIDDzwQ9F4vv/yyvvGNb4TaIgAAGGNC/hwWU/E5LACuhs9hAcxzUz6HBQAAIBwILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA440osFRXV8vhcCgmJkZZWVlqamoasvbdd9/VypUr5XA4FBERoaqqquveJwAAuL2EHFjq6urkcrlUWVmplpYWpaamKjc3V52dnYPWX7x4UbNnz9a2bdtkt9tvyD4BAMDtJeTAsnPnTpWUlKi4uFgpKSmqqanRxIkTtXfv3kHrly1bphdeeEFPPPGEbDbbDdknAAC4vYQUWPr7+9Xc3Cyn03l5B5GRcjqdamxsHFEDI91nX1+fenp6gjYAADA2hRRYzp8/r4GBASUkJASNJyQkyOv1jqiBke7T7XYrLi4usCUnJ4/o/QEAgPlG7VNC5eXl6u7uDmzt7e3hbgkAANwk40Ipjo+PV1RUlHw+X9C4z+cb8obam7VPm8025D0xwFjk2PhayHM+2rbiJnQSPiacAxN6uB6jvX/cvkJaYYmOjlZ6ero8Hk9gzO/3y+PxKDs7e0QN3Ix9AgCAsSWkFRZJcrlcKioqUkZGhjIzM1VVVaXe3l4VFxdLktasWaOkpCS53W5Jn91Ue/r06cDX586dU2trqyZNmqQ5c+Zc0z4BAMDtLeTAUlhYqK6uLlVUVMjr9SotLU319fWBm2bb2toUGXl54aajo0NLliwJfL99+3Zt375dOTk5amhouKZ9AgCA21vIgUWSSktLVVpaOuhrn4eQzzkcDlmWdV37BAAAt7dR+5QQAAC4fRBYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOONC3cDAIBr59j4WshzPtq24iZ0AtxarLAAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGG9EgaW6uloOh0MxMTHKyspSU1PTsPX79+/X/PnzFRMTo0WLFunw4cNBr1+4cEGlpaWaMWOGJkyYoJSUFNXU1IykNQAAMAaFHFjq6urkcrlUWVmplpYWpaamKjc3V52dnYPWHz9+XKtWrdLatWv19ttvKz8/X/n5+Tp16lSgxuVyqb6+Xv/wD/+g9957Txs2bFBpaakOHTo08iMDAABjRsiBZefOnSopKVFxcXFgJWTixInau3fvoPW7du1SXl6eysrKtGDBAm3dulVLly7V7t27AzXHjx9XUVGRHnjgATkcDj355JNKTU296soNAAC4PYQUWPr7+9Xc3Cyn03l5B5GRcjqdamxsHHROY2NjUL0k5ebmBtUvX75chw4d0rlz52RZlo4ePar3339fDz300JC99PX1qaenJ2gDAABjU0iB5fz58xoYGFBCQkLQeEJCgrxe76BzvF7vVetffPFFpaSkaMaMGYqOjlZeXp6qq6t1//33D9mL2+1WXFxcYEtOTg7lUAAAwChixFNCL774ok6cOKFDhw6publZO3bs0Lp16/Sv//qvQ84pLy9Xd3d3YGtvb7+FHQMAgFtpXCjF8fHxioqKks/nCxr3+Xyy2+2DzrHb7cPW//73v9emTZt04MABrVixQpK0ePFitba2avv27Vf8OOlzNptNNpstlPYBAMAoFdIKS3R0tNLT0+XxeAJjfr9fHo9H2dnZg87Jzs4OqpekI0eOBOovXbqkS5cuKTIyuJWoqCj5/f5Q2gMAAGNUSCss0mePIBcVFSkjI0OZmZmqqqpSb2+viouLJUlr1qxRUlKS3G63JGn9+vXKycnRjh07tGLFCu3bt08nT57Unj17JEmxsbHKyclRWVmZJkyYoJkzZ+rYsWP6yU9+op07d97AQwUAAKNVyIGlsLBQXV1dqqiokNfrVVpamurr6wM31ra1tQWtlixfvly1tbXavHmzNm3apLlz5+rgwYNauHBhoGbfvn0qLy/X6tWr9dvf/lYzZ87U3/3d3+mpp566AYcIAABGu5ADiySVlpaqtLR00NcaGhquGCsoKFBBQcGQ+7Pb7Xr55ZdH0goAALgNGPGUEAAAwHAILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA440osFRXV8vhcCgmJkZZWVlqamoatn7//v2aP3++YmJitGjRIh0+fPiKmvfee08PP/yw4uLidMcdd2jZsmVqa2sbSXsAAGCMCTmw1NXVyeVyqbKyUi0tLUpNTVVubq46OzsHrT9+/LhWrVqltWvX6u2331Z+fr7y8/N16tSpQM3Zs2d13333af78+WpoaNA777yjLVu2KCYmZuRHBgAAxoyQA8vOnTtVUlKi4uJipaSkqKamRhMnTtTevXsHrd+1a5fy8vJUVlamBQsWaOvWrVq6dKl2794dqPnrv/5rfeUrX9Hzzz+vJUuW6J577tHDDz+sadOmjfzIAADAmBFSYOnv71dzc7OcTuflHURGyul0qrGxcdA5jY2NQfWSlJubG6j3+/167bXX9IUvfEG5ubmaNm2asrKydPDgwWF76evrU09PT9AGAADGppACy/nz5zUwMKCEhISg8YSEBHm93kHneL3eYes7Ozt14cIFbdu2TXl5efqXf/kXPfroo3rsscd07NixIXtxu92Ki4sLbMnJyaEcCgAAGEXC/pSQ3++XJD3yyCN69tlnlZaWpo0bN+qrX/2qampqhpxXXl6u7u7uwNbe3n6rWgYAALfYuFCK4+PjFRUVJZ/PFzTu8/lkt9sHnWO324etj4+P17hx45SSkhJUs2DBAv3yl78cshebzSabzRZK+wAAYJQKaYUlOjpa6enp8ng8gTG/3y+Px6Ps7OxB52RnZwfVS9KRI0cC9dHR0Vq2bJnOnDkTVPP+++9r5syZobQHAADGqJBWWCTJ5XKpqKhIGRkZyszMVFVVlXp7e1VcXCxJWrNmjZKSkuR2uyVJ69evV05Ojnbs2KEVK1Zo3759OnnypPbs2RPYZ1lZmQoLC3X//ffrT/7kT1RfX69f/OIXamhouDFHCRjAsfG1kOd8tG3FTegEuD5cywiHkANLYWGhurq6VFFRIa/Xq7S0NNXX1wdurG1ra1Nk5OWFm+XLl6u2tlabN2/Wpk2bNHfuXB08eFALFy4M1Dz66KOqqamR2+3WM888o3nz5umf/umfdN99992AQwQAAKNdyIFFkkpLS1VaWjroa4OtihQUFKigoGDYfX7zm9/UN7/5zZG0A+Aa8X/GAEarsD8lBAAAcDUEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeCMKLNXV1XI4HIqJiVFWVpaampqGrd+/f7/mz5+vmJgYLVq0SIcPHx6y9qmnnlJERISqqqpG0hoAABiDQg4sdXV1crlcqqysVEtLi1JTU5Wbm6vOzs5B648fP65Vq1Zp7dq1evvtt5Wfn6/8/HydOnXqitoDBw7oxIkTSkxMDP1IAADAmBVyYNm5c6dKSkpUXFyslJQU1dTUaOLEidq7d++g9bt27VJeXp7Kysq0YMECbd26VUuXLtXu3buD6s6dO6enn35ar7zyisaPHz+yowEAAGNSSIGlv79fzc3Ncjqdl3cQGSmn06nGxsZB5zQ2NgbVS1Jubm5Qvd/v19e//nWVlZXpi1/84jX10tfXp56enqANAACMTSEFlvPnz2tgYEAJCQlB4wkJCfJ6vYPO8Xq9V63//ve/r3HjxumZZ5655l7cbrfi4uICW3JycghHAgAARpOwPyXU3NysXbt26Uc/+pEiIiKueV55ebm6u7sDW3t7+03sEgAAhFNIgSU+Pl5RUVHy+XxB4z6fT3a7fdA5drt92Pp/+7d/U2dnp+6++26NGzdO48aN069//Wv95V/+pRwOx5C92Gw2xcbGBm0AAGBsCimwREdHKz09XR6PJzDm9/vl8XiUnZ096Jzs7Oygekk6cuRIoP7rX/+63nnnHbW2tga2xMRElZWV6fXXXw/1eAAAwBg0LtQJLpdLRUVFysjIUGZmpqqqqtTb26vi4mJJ0po1a5SUlCS32y1JWr9+vXJycrRjxw6tWLFC+/bt08mTJ7Vnzx5J0tSpUzV16tSg9xg/frzsdrvmzZt3vccHAADGgJADS2Fhobq6ulRRUSGv16u0tDTV19cHbqxta2tTZOTlhZvly5ertrZWmzdv1qZNmzR37lwdPHhQCxcuvHFHAQAAxrSQA4sklZaWqrS0dNDXGhoarhgrKChQQUHBNe//o48+GklbAABgjAr7U0IAAABXQ2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGC8ceFuAMDtw7HxtZDnfLRtxU3oBKMZ19HtiRUWAABgvBEFlurqajkcDsXExCgrK0tNTU3D1u/fv1/z589XTEyMFi1apMOHDwdeu3Tpkp577jktWrRId9xxhxITE7VmzRp1dHSMpDUAADAGhRxY6urq5HK5VFlZqZaWFqWmpio3N1ednZ2D1h8/flyrVq3S2rVr9fbbbys/P1/5+fk6deqUJOnixYtqaWnRli1b1NLSop/97Gc6c+aMHn744es7MgAAMGaEHFh27typkpISFRcXKyUlRTU1NZo4caL27t07aP2uXbuUl5ensrIyLViwQFu3btXSpUu1e/duSVJcXJyOHDmixx9/XPPmzdOXvvQl7d69W83NzWpra7u+owMAAGNCSIGlv79fzc3Ncjqdl3cQGSmn06nGxsZB5zQ2NgbVS1Jubu6Q9ZLU3d2tiIgI3XnnnUPW9PX1qaenJ2gDAABjU0iB5fz58xoYGFBCQkLQeEJCgrxe76BzvF5vSPWffvqpnnvuOa1atUqxsbFD9uJ2uxUXFxfYkpOTQzkUAAAwihj1lNClS5f0+OOPy7IsvfTSS8PWlpeXq7u7O7C1t7ffoi4BAMCtFtLnsMTHxysqKko+ny9o3OfzyW63DzrHbrdfU/3nYeXXv/613njjjWFXVyTJZrPJZrOF0j4AABilQgos0dHRSk9Pl8fjUX5+viTJ7/fL4/GotLR00DnZ2dnyeDzasGFDYOzIkSPKzs4OfP95WPnggw909OhRTZ06NfQjwU3FBzUBNwb/LQEjE/In3bpcLhUVFSkjI0OZmZmqqqpSb2+viouLJUlr1qxRUlKS3G63JGn9+vXKycnRjh07tGLFCu3bt08nT57Unj17JH0WVv70T/9ULS0tevXVVzUwMBC4v2XKlCmKjo6+UccKAABGqZADS2Fhobq6ulRRUSGv16u0tDTV19cHbqxta2tTZOTlW2OWL1+u2tpabd68WZs2bdLcuXN18OBBLVy4UJJ07tw5HTp0SJKUlpYW9F5Hjx7VAw88MMJDAwAAY8WIfpdQaWnpkD8CamhouGKsoKBABQUFg9Y7HA5ZljWSNgAAwG3CqKeEAAAABkNgAQAAxiOwAAAA4xFYAACA8UZ00y1wO+LzM4Cxgf+WRydWWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjMdjzbgleIxwbODfI4BwYYUFAAAYjxWW2wT/ZwzAFPx5hJFghQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8fhtzaMEv90UAMzAn8fhwQoLAAAwHoEFAAAYj8ACAACMxz0sGBX4mTEA3N5GtMJSXV0th8OhmJgYZWVlqampadj6/fv3a/78+YqJidGiRYt0+PDhoNcty1JFRYWmT5+uCRMmyOl06oMPPhhJawAAYAwKeYWlrq5OLpdLNTU1ysrKUlVVlXJzc3XmzBlNmzbtivrjx49r1apVcrvd+upXv6ra2lrl5+erpaVFCxculCQ9//zz+sEPfqAf//jHmjVrlrZs2aLc3FydPn1aMTEx13+UYcbqAADgRrod/14JeYVl586dKikpUXFxsVJSUlRTU6OJEydq7969g9bv2rVLeXl5Kisr04IFC7R161YtXbpUu3fvlvTZ6kpVVZU2b96sRx55RIsXL9ZPfvITdXR06ODBg9d1cAAAYGwIaYWlv79fzc3NKi8vD4xFRkbK6XSqsbFx0DmNjY1yuVxBY7m5uYEw8uGHH8rr9crpdAZej4uLU1ZWlhobG/XEE08Mut++vj719fUFvu/u7pYk9fT0hHJI12Rh5eshzzn1ndzA1/6+iyHP/8PjuN593O7zpfD/ewz3fBN6GO3zTegh3PNN6GG0z5fC/+fR9b7/jfR5X5ZlDV9oheDcuXOWJOv48eNB42VlZVZmZuagc8aPH2/V1tYGjVVXV1vTpk2zLMuy/v3f/92SZHV0dATVFBQUWI8//viQvVRWVlqS2NjY2NjY2MbA1t7ePmwGGbVPCZWXlwet3Pj9fv32t7/V1KlTFRERcUt66OnpUXJystrb2xUbG3tL3nOs4RxeP87h9eMcXj/O4fW7Xc+hZVn63e9+p8TExGHrQgos8fHxioqKks/nCxr3+Xyy2+2DzrHb7cPWf/5Pn8+n6dOnB9WkpaUN2YvNZpPNZgsau/POO6/1UG6o2NjY2+riuhk4h9ePc3j9OIfXj3N4/W7HcxgXF3fVmpBuuo2OjlZ6ero8Hk9gzO/3y+PxKDs7e9A52dnZQfWSdOTIkUD9rFmzZLfbg2p6enr01ltvDblPAABwewn5R0Iul0tFRUXKyMhQZmamqqqq1Nvbq+LiYknSmjVrlJSUJLfbLUlav369cnJytGPHDq1YsUL79u3TyZMntWfPHklSRESENmzYoO9+97uaO3du4LHmxMRE5efn37gjBQAAo1bIgaWwsFBdXV2qqKiQ1+tVWlqa6uvrlZCQIElqa2tTZOTlhZvly5ertrZWmzdv1qZNmzR37lwdPHgw8BkskvTtb39bvb29evLJJ/XJJ5/ovvvuU319vfGfwWKz2VRZWXnFj6Zw7TiH149zeP04h9ePc3j9OIfDi7Csqz1HBAAAEF788kMAAGA8AgsAADAegQUAABiPwAIAAIxHYBmh6upqORwOxcTEKCsrS01NTeFuadT4m7/5G0VERARt8+fPD3dbxnvzzTf1ta99TYmJiYqIiLjil4NalqWKigpNnz5dEyZMkNPp1AcffBCeZg11tXP4jW9844prMy8vLzzNGsjtdmvZsmWaPHmypk2bpvz8fJ05cyao5tNPP9W6des0depUTZo0SStXrrziw0NvZ9dyDh944IErrsOnnnoqTB2bg8AyAnV1dXK5XKqsrFRLS4tSU1OVm5urzs7OcLc2anzxi1/Uxx9/HNh++ctfhrsl4/X29io1NVXV1dWDvv7888/rBz/4gWpqavTWW2/pjjvuUG5urj799NNb3Km5rnYOJSkvLy/o2vzpT396Czs027Fjx7Ru3TqdOHFCR44c0aVLl/TQQw+pt7c3UPPss8/qF7/4hfbv369jx46po6NDjz32WBi7Nsu1nENJKikpCboOn3/++TB1bJBhf9MQBpWZmWmtW7cu8P3AwICVmJhoud3uMHY1elRWVlqpqanhbmNUk2QdOHAg8L3f77fsdrv1wgsvBMY++eQTy2azWT/96U/D0KH5/vAcWpZlFRUVWY888khY+hmNOjs7LUnWsWPHLMv67JobP368tX///kDNe++9Z0myGhsbw9Wm0f7wHFqWZeXk5Fjr168PX1OGYoUlRP39/WpubpbT6QyMRUZGyul0qrGxMYydjS4ffPCBEhMTNXv2bK1evVptbW3hbmlU+/DDD+X1eoOuy7i4OGVlZXFdhqihoUHTpk3TvHnz9K1vfUu/+c1vwt2Ssbq7uyVJU6ZMkSQ1Nzfr0qVLQdfh/Pnzdffdd3MdDuEPz+HnXnnlFcXHx2vhwoUqLy/XxYsXw9GeUUbtb2sOl/Pnz2tgYCDwyb6fS0hI0H/913+FqavRJSsrSz/60Y80b948ffzxx/rOd76jP/7jP9apU6c0efLkcLc3Knm9Xkka9Lr8/DVcXV5enh577DHNmjVLZ8+e1aZNm/TlL39ZjY2NioqKCnd7RvH7/dqwYYPuvffewCeXe71eRUdHX/GLaLkOBzfYOZSkP/uzP9PMmTOVmJiod955R88995zOnDmjn/3sZ2HsNvwILLjlvvzlLwe+Xrx4sbKysjRz5kz94z/+o9auXRvGznC7e+KJJwJfL1q0SIsXL9Y999yjhoYGPfjgg2HszDzr1q3TqVOnuP/sOgx1Dp988snA14sWLdL06dP14IMP6uzZs7rnnntudZvG4EdCIYqPj1dUVNQVd737fD7Z7fYwdTW63XnnnfrCF76gX/3qV+FuZdT6/NrjuryxZs+erfj4eK7NP1BaWqpXX31VR48e1YwZMwLjdrtd/f39+uSTT4LquQ6vNNQ5HExWVpYk3fbXIYElRNHR0UpPT5fH4wmM+f1+eTweZWdnh7Gz0evChQs6e/aspk+fHu5WRq1Zs2bJbrcHXZc9PT166623uC6vw//8z//oN7/5Ddfm/7MsS6WlpTpw4IDeeOMNzZo1K+j19PR0jR8/Pug6PHPmjNra2rgO/9/VzuFgWltbJem2vw75kdAIuFwuFRUVKSMjQ5mZmaqqqlJvb6+Ki4vD3dqo8Fd/9Vf62te+ppkzZ6qjo0OVlZWKiorSqlWrwt2a0S5cuBD0f1gffvihWltbNWXKFN19993asGGDvvvd72ru3LmaNWuWtmzZosTEROXn54evacMMdw6nTJmi73znO1q5cqXsdrvOnj2rb3/725ozZ45yc3PD2LU51q1bp9raWv385z/X5MmTA/elxMXFacKECYqLi9PatWvlcrk0ZcoUxcbG6umnn1Z2dra+9KUvhbl7M1ztHJ49e1a1tbX6yle+oqlTp+qdd97Rs88+q/vvv1+LFy8Oc/dhFu7HlEarF1980br77rut6OhoKzMz0zpx4kS4Wxo1CgsLrenTp1vR0dFWUlKSVVhYaP3qV78Kd1vGO3r0qCXpiq2oqMiyrM8ebd6yZYuVkJBg2Ww268EHH7TOnDkT3qYNM9w5vHjxovXQQw9Zf/RHf2SNHz/emjlzplVSUmJ5vd5wt22Mwc6dJOvll18O1Pz+97+3/uIv/sK66667rIkTJ1qPPvqo9fHHH4evacNc7Ry2tbVZ999/vzVlyhTLZrNZc+bMscrKyqzu7u7wNm6ACMuyrFsZkAAAAELFPSwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGO//AFPAfbl8GNdjAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(range(len(four_spec_8)), four_spec_8)\n",
    "plt.bar(range(len(four_spec_12)), four_spec_12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5.8845586355845466e-05+0j)"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sum(four_spec_8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
